Я ищу, чтобы запустить цикл кодирования Excel VBA, который ищет в столбце «G» поиск любых дат, которые появляются, а затем делает что-то с этой датой, а затем переходит к следующей дате который появляется при выборе. Моя проблема заключается в том, что как только код достигнет нижней части рабочего листа (или конца выделения), он просто перезагружается в верхней части раздела и снова зацикливается. Мне нужно, чтобы код остановился, как только он достигнет конца документа (и в этом случае конец выбора). Любые идеи о том, как это сделать?Do до окончания кода выбора
Вот мой код до сих пор:
Sub Move_Dates_To_Column()
Dim Cell As Range
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Set SelectedRange = Sheets("Sheet1").Range("G1:G9000")
Set FindDate = Sheets("Sheet1").Range("G1:G9000").Find(What:="**/**/****", LookIn:=xlFormulas)
' Do Until FindDate Is Nothing
' If Not FindDate Is Nothing Then
For Each Cell In SelectedRange
Cell.Select
If Not IsEmpty(ActiveCell.Value) Then
Cells.Find(What:="**/**/****", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
ActiveCell.Copy
ActiveCell.Offset(2, -7).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(2, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
ActiveCell.Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
'ActiveCell.Offest(1, 0).Select
End If
Next Cell
End Sub
* Только примечание, есть пустые пространства во всем этом диапазоне. Диапазон должен быть "Range (G: G)"
Вместо того, чтобы активно выбирать данные, я рекомендую вам перейти к (1) найти столбец верхнего ряда/левого столбца и нижний колонтитул/правый столбец, а затем (2) Пропустить этот диапазон на основе заранее определенных пределов. Это поможет с вашей конкретной проблемой, но также, как правило, лучший способ программирования в VBA (избегайте. Выберите любую стоимость, скорость и избежать подобных проблем). –
Я никогда раньше так не кодировался. Можете ли вы привести мне пример, который я могу изменить, чтобы соответствовать моим потребностям? Как я могу позволить excel узнать, что находится верхний столбец/левый столбец и нижний столбец/правый столбец – JGoldz75
Ваш код не компилируется. Существует очевидный «End If». Пожалуйста, исправьте свой код для компиляции и попробуйте объяснить, что вы хотите добиться. Например, вы хотите скопировать и вставить тот же рабочий лист или другой? потому что ваш код иногда ссылается на Sheet1, а иногда нет. –