Ваш код
Private Sub CheckOut_Click()
Dim xCell As Range
' Loop through cells of first column. You can also use "A" instead of 1.
' Since you haven't used ActiveSheet with the ranges, it is also not
' needed here. It would be better to specify the worksheet e.g. "Sheet1".
For Each xCell In ActiveSheet.Columns(1).Cells
' Check if length of value of current cell is 0.
' Usually 'If xCell = "" Then' is used.
If Len(xCell) = 0 Then
' Select (Go to) current cell. What for?
xCell.Select
' Exit the For Next loop. Will jump to 'Range("B2") ...'
Exit For
End If
Next
' Write certain values to cells of 2nd row.
Range("B2").Value = TextBox1.Text
Range("C2").Value = TextBox2.Text
Range("D2").Value = ("OUT")
' Clear the Text boxes.
TextBox1 = ""
TextBox2 = ""
End Sub
В двух словах, код проверит наличие пустой ячейки в столбце 1, выберет найденную ячейку (по неизвестной причине) и запишет некоторые данные в определенные ячейки в2-й строке и очистите значения текстовых полей.
Вопросы
Вы перебираете столбец 1. Когда найдена пустая ячейка, хотите ли вы записать значения в столбцы BD всначала обнаружили пустую строку или столбцы BD в той же строке, где была найдена пустая ячейка в столбце 1?
Пусто или то же самое?
Хотите, чтобы это происходило только один раз, когда пустоячейка была найдена или для всех найденных пустых ячеек в используемом диапазоне столбца 1?
Один раз или все?
Используемый диапазон столбца 1 будет, например, от A1 или ячейки, выбранной вами до последней использованной ячейки.
Вы можете вручную определить последнюю использованную ячейку с помощьювыбрав последнюю ячейку столбца 1 («A»), удерживая правую клавишу CTRL и нажимая ВВЕРХ.Это будет сделано в коде, но это просто для вас, чтобы иметь представление о том, что будет проверяться на наличие пустых ячеек, если вы хотите найти больше из них.
A1 или ...?
Вы должны ответить на эти вопросы в своем вопросе, который вы можете изменить, используя кнопку редактирования под ним.
Возможное решение
Private Sub CheckOut_Click()
Dim xCell As Range ' Current Cell in Column "A"
Dim FER As Long ' First Empty Row
' Loop through cells of Column "A".
For Each xCell In Columns("A")
' Check if value of Current Cell is "".
If xCell.Value = "" Then
' Select Current Cell. If necessary.
xCell.Select
' Calculate First Empty Row using column "B".
FER = Range("B" & Rows.Count).End(xlUp).Row + 1
' Write values to Target Cells in First Empty Row.
Range("B" & FER).Value = TextBox1.Text
Range("C" & FER).Value = TextBox2.Text
Range("D" & FER).Value = ("OUT")
' Clear the Text boxes.
TextBox1 = ""
TextBox2 = ""
Exit For ' Stop looping.
End If
Next
End Sub
Замечания
Как это могло бы иметь смысл?
Что, если OP не сообщил нам, что xCell.Select
вызывает событие Selection Change
, которое записывает значения в xCell
и текстовые поля и ограничивает эток используемому диапазону столбца A
?