Преобразование Столбцов Даты Excel С помощью Макроса VBA?

#excel

Вопрос:

Я застрял, пытаясь разработать код vba для преобразования столбца значений даты и времени excel в строковое значение только времени в 24-часовом формате (ЧЧ:ММ).

Я могу прочитать свойство, когда я просматриваю коллекцию, но я не могу установить форматирование:

  Dim dt As Date
 Dim rng As Range: Set rng = Application.Range("sheet2!E2:E100")
 DIm i As Integer
 For i = 1 To rng.Rows.Count
     dt = rng.Cells(RowIndex:=i, ColumnIndex:="E").Value
     rng.Cells(RowIndex:=i, ColumnIndex:="E").NumberFormat = "@" '// <-- Exception Here
     rng.Cells(RowIndex:=i, ColumnIndex:="E").Value = Format(dt, "HH:MM")
 Next
 
  1. Почему он создает исключение?
  2. Я пытаюсь запустить это для всего столбца E, но E1-это заголовок, а размер E неизвестен, как я могу это объяснить?

Комментарии:

1. Что такое «исключение»? Какова ценность i , когда он ошибается? Каково содержание Ei , когда он ошибается?

Ответ №1:

Я не знаю, почему вы получаете исключение, но следующий код работает для меня:

 Sub StringTime()

Dim rng As Range
Dim lRow As Long
Dim strTime As String

'find last row
lRow = Range("E1").CurrentRegion.Rows.Count

Set rng = Range("E2:E" amp; lRow)

For i = 1 To rng.Rows.Count
    strTime = Hour(rng.Cells(i).Value) amp; ":" amp; Minute(rng.Cells(i).Value)
    rng.Cells(i).NumberFormat = "@"
    rng.Cells(i).Value = strTime
Next i

End Sub
 

Обратите внимание, что я нахожу последнюю строку в столбце E перед установкой диапазона. Это устранит вашу проблему с переменным размером.