#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
- Почему он создает исключение?
- Я пытаюсь запустить это для всего столбца 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 перед установкой диапазона. Это устранит вашу проблему с переменным размером.