Помогите найти ошибку в макросе VBA

компьютеры excel VBA макросы visula basic

Sub MakeDate()
Dim k As String
k = Worksheets("Лист1").Cells(1, 13).Value
Dim dates As String
dates = ""
For i = 1 To k
dates = Worksheets(Лист1").Cells(i, 12).Value
dmon = Mid(dates, 1, 4)
Select Case dmon
Case "янв "
dmonn = "01"
Case "фев "
dmonn = "02"
Case "март"
dmonn = "03"
Case Else
Worksheets("Лист1").Cells(i, 12).Value = ""
GoTo exit_for
End Select
dyear = Mid(dates, Len(dates) - 2, 2)
Worksheets("Лист1").Cells(i, 12).Value = "20" + dyear + "-" + dmonn + "-01"
exit_for:
Next i
End Sub

Ошибка 9: Subscript out of range

Примечание:
В этой ячейке, из которой берет значение k, хранится число строк в таблице. Подскажите, как можно его перевести в формат, доступный для цикла for...
Ответы:
>Dim k As String
...
>For i = 1 To k
Если полностью убрать строчку "Dim k As String",
и добавить пропущенную кавычку в строчку "dates = Worksheets(Лист1").Cells(i, 12).Value",
и заменить в строке "dyear = Mid(dates, Len(dates) - 2, 2)" 2 на 1, вот так "dyear = Mid(dates, Len(dates) - 1, 2)",
то скрипт будет работать, заменяя строчки вида "фев 2009" на "2009-02-01".


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.