Я написал макрос, который Копирует строку из трех клеток, оставшихся к заметному клетки и пастам те к следующей свободной строке в определенном листе:для альтернативного/переменного для максимального счетчика?
Sub testmacro_01()
'setting the variables
Dim x As Integer
Dim y As Integer
Dim string1 As String
Dim string2 As String
Dim string3 As String
'setting start values
x = 1
y = 1
string1 = ""
string2 = ""
string3 = ""
'checking for "m" in the "checkcolumn", if "m" then copy columns left to it:
For x = 1 To 100
If ThisWorkbook.Sheets("testsheet").Cells(x, 4).Value = "m" _
Then
string1 = ThisWorkbook.Sheets("testsheet").Cells(x, 1).Value
string2 = ThisWorkbook.Sheets("testsheet").Cells(x, 2).Value
string3 = ThisWorkbook.Sheets("testsheet").Cells(x, 3).Value
'checking for the next free line in "newsheet":
Line1:
If ThisWorkbook.Sheets("newsheet").Cells(y, 1).Value = "" _
And ThisWorkbook.Sheets("newsheet").Cells(y, 2).Value = "" _
And ThisWorkbook.Sheets("newsheet").Cells(y, 1).Value = "" _
Then
'pasting the strings into the free lines:
ThisWorkbook.Sheets("newsheet").Cells(y, 1).Value = string1
ThisWorkbook.Sheets("newsheet").Cells(y, 2).Value = string2
ThisWorkbook.Sheets("newsheet").Cells(y, 3).Value = string3
Else
'if the checked line is full the search will go down by 1 line:
y = y + 1
GoTo Line1
End If
End If
Next
End Sub
Например: This is the source sheet
(каждая линия слева линия, обозначенная буква «м» в колонке D должна быть скопирована)
and this is the result after playing the macro.
(клетки с серым фоном существует, чтобы т est «следующая функция свободной линии»)
Вот где я застрял: Пока этот макрос работает и делает то, что он должен делать, я чувствую, что он довольно статичен и может быть сделан более «профессионально». Я сосредоточен здесь на цикле «for to»: Как поместить переменное число, которое всегда будет включать все существующие строки в текстовом листе в цикл for for вместо «100»? Изменение 100 до 1000 будет работать для большинства моих приложений, но кажется очень ханжеским.
Отличный ответ [здесь] (http://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba) о том, как найти последнюю ячейку в столбце. Сохраните это значение в переменной и используйте это как верхний предел цикла – gtwebb