#excel #vba #userform
Вопрос:
У меня есть простая форма пользователя с двумя текстовыми полями. Пользователь должен ввести описание детали в один помеченный «Идентификатор панели», а количество строк, в которых это описание должно быть введено в том же столбце электронной таблицы (Количество). К настоящему времени я в порядке с добавлением значения в пустую строку, но застрял при копировании значения в другие ячейки. У меня есть код для копирования значения в заданном диапазоне, но я не могу найти ничего, что подходит для того, что я ищу. Спасибо
Private Sub SubmitBtn_Click()
Dim iRow As Long, C As Long
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Data")
iRow = sh.Cells(Rows.Count, 1).End(xlUp).Row 1
C = QTYBox.Value
With sh
.Cells(iRow, 1) = TxtPanel.Value
End With
End Sub
Private Sub UserForm_Initialize()
'Empty Panel ID cell
TxtPanel.Value = ""
'Empty Quantity cell
QTYBox.Value = ""
'Set focus to panel ID cell
TxtPanel.SetFocus
End Sub
Это код для второй проблемы:
электронная таблица формы ящика
для ящиков
Private Sub SubmitBtn_Click()
Dim i As Long
Dim sh As Worksheet
Dim lRow As Long
Set sh = ThisWorkbook.Sheets("Data")
lRow = sh.Cells(Rows.Count, 1).End(xlUp).Row
With sh
For i = 2 To lRow
'Criteria search
If .Cells(i, 1).Value = PanelTxt.Value Then
If .Cells(i, 2).Value = IDTxt.Value Then
'Enter date in Crated and Crate #
.Cells(i, 5) = [Text(Now(), "DD-MM-YY HH:MM")]
.Cells(i, 6) = CrateTxt.Value
Exit For
End If
End If
Next
End With
End Sub
Комментарии:
1. Попробуй
.Cells(iRow, 1).Resize(C) = TxtPanel.Value
2. Идеальный. Как всегда, миллион благодарностей…
3. Теперь я нахожусь на второй части того же стола. Предполагается, что разные отделы упаковывают панели и сканируют, какие из них упакованы. Когда они отправят ; Мне нужно, чтобы дата и номер ящика были введены в столбцы E и F для правильной строки панели (идентификатор панели и идентификатор# «КОЛ-во»). Я попробовал код, но он ничего не делает. Не уверен, чего не хватает. Код добавляется к исходному сообщению.
4. Я не вижу ничего плохого. Может быть, добавить обрезку
If .Cells(i, 1).Value = Trim(PanelTxt.Value) Then
на случай, если это просто скрытые места. Я заметил, что у вас былоTxtPanel
в первой форме иPanelTxt
в форме ящика, старайтесь быть последовательными, потому что именно там любят прятаться жуки :).5. К сожалению, ничего не происходит. Хм, попробую поиграть с ним еще немного. Я изменил настройку с электронными таблицами, так что теперь это совершенно отдельная электронная таблица с другой формой. Просто чтобы посмотреть, не скрываются ли какие-то ошибки в наличии двух разных форм в одной и той же электронной таблице. Но это все равно не работает.