Найти столбец, в котором записаны даты - VBA
Формулировка задачи:
Ввести координаты ячейки и определить относительно нее текущий регион (CurrentRegion), в котором найти первый слева столбец с датами. Отсортировать строки текущего региона по возрастанию дат в этом столбце. После этого вставить слева от текущего региона дополнительный столбец и проставить в нем нумерацию строк.
Это было все задание.
Я сделал на данный момент такое:
Теперь нужно в выделенном диапазоне найти первый столбец слева направо, в котором записаны даты. Подскажите, как это сделать?
Листинг программы
- Sub SelectingRangeOfCellsUsingRangeAndCurrentRegion()
- Dim Coord As String
- Dim Msg As String
- Msg = "Enter the coord"
- Coord = InputBox(Msg)
- range(Coord).CurrentRegion.Select
- Dim cur_range As range
- With ActiveSheet
- Set cur_range = Selection
- cur_range.Activate
- For x = 1 To cur_range.Rows.Count
- For y = 1 To cur_range.Columns.Count
- СЮДА НАДО ДОПИСАТЬ
- if cur_range(x, y)
- Next y
- Next x
- End With
- End Sub
нашел, TypeName, но каждый элемент массива cur_range определяется как range, надо как-то иначе определить тип, скорее всего не создавая массив, а сразу работать по выделенным ячейкам.
null
Вот, выделил нужный диапазон, теперь надо с ним все это сделать Решение задачи: «Найти столбец, в котором записаны даты»
textual
Листинг программы
- Sub Sel()
- Dim i&
- With Application.InputBox("Введите адрес диапазона или выделите его мышкой", Type:=8).CurrentRegion
- For i = 1 To .Columns.Count
- If VarType(.Cells(1, i).Value) = vbDate Then
- .Sort .Cells(1, i), xlAscending, Header:=False
- .Columns(1).Insert
- With .Columns(1).Offset(, -1)
- .Formula = "=ROW(R1:R" & .Rows.Count & ")"
- .Value = .Value
- End With
- Exit Sub
- End If
- Next
- .Select
- MsgBox "Дата в первой строке диапазона не обнаружена", vbExclamation
- End With
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д