#excel #vba #userform
#excel #vba #пользовательская форма
Вопрос:
У меня есть пользовательская форма, которая извлекает данные из более чем одного листа на основе записи в первом текстовом поле («Число»). До сих пор мне удавалось заставить его вводить данные с одного листа, но не с другого. Моя пользовательская форма («LineView») имеет следующие текстовые поля: Number — это то, в которое я ввожу номер задания (например, «J1234») и на основе этого заполняет остальные. Эти извлекаются из листа («Задания»), JobName — Это извлекается из столбца 2, CustomerName — Это извлекается из столбца 3, Адрес — Столбец 7, Инструкции по доставке — Столбец 8, Контакт — Столбец 5, Контактный телефон — Столбец 6, Остальные извлекаются из листа («Двери») Код, который я написал для текстовых полей, которые берут данные с рабочего листа («Двери»), работает. У меня возникают проблемы только с извлечением информации из листа («Задания»). Это код, который я написал до сих пор.
Private Sub Number_Change()
Dim j As Worksheet
Dim d As Worksheet
Set j = Sheets("Jobs")
Set d = Sheets("Doors")
Dim LR As Long
Dim r As Long
Dim i As Long
DoorList.Clear
With Worksheets("Doors")
LR = .Range("A" amp; .Rows.Count).End(xlUp).row
For r = 2 To LR
If .Cells(r, 5).Value = Number.Value Then
DoorList.AddItem .Cells(r, 1).Value
DoorList.List(i, 0) = .Cells(r, 1).Value
DoorList.List(i, 1) = .Cells(r, 2).Value
DoorList.List(i, 2) = .Cells(r, 4).Value
DoorList.List(i, 3) = .Cells(r, 6).Value
DoorList.List(i, 4) = .Cells(r, 7).Value
DoorList.List(i, 5) = .Cells(r, 15).Value
i = i 1
End If
Next r
End With
With DoorList
.ColumnCount = 6
'Fill Time Cells
Jbox.Value = Application.SumIf(d.Range("E:E"), Number.Value, d.Range("H:H"))
DMBox.Value = Application.SumIf(d.Range("E:E"), Number.Value, d.Range("I:I"))
SBox.Value = Application.SumIf(d.Range("E:E"), Number.Value, d.Range("J:J"))
PHBox.Value = Application.SumIf(d.Range("E:E"), Number.Value, d.Range("K:K"))
CDBox.Value = Application.SumIf(d.Range("E:E"), Number.Value, d.Range("L:L"))
CJBox.Value = Application.SumIf(d.Range("E:E"), Number.Value, d.Range("M:M"))
COBox.Value = Application.SumIf(d.Range("E:E"), Number.Value, d.Range("N:N"))
End Sub
Я перепробовал много разных способов, но не могу заставить ни один из них работать.
Заранее спасибо за вашу помощь и время.
Комментарии:
1. Похоже, что там нет никакого кода, который извлекает информацию из «Заданий», поэтому трудно сказать, в чем может быть проблема.
2. Я ввел то, что, как я думал, было одним из способов, которыми я выполнял эту часть ранее, и просто протестировал это, и это сработало !!!? Я не знаю, чем я отличаюсь от других времен!? Это то, что я сейчас ввел и работает:
3. ‘Заполните детали задания с помощью листов («Задания») Для r = 2 до LR, если .Ячейки (r, 1).Значение = Число.Значение, затем JobName. Значение = .Ячейки (r, 2) имя_пользователя. Значение = .Адрес ячеек (r, 3). Значение = .Cells(r, 7) DeliveryInstructions. Значение = .Ячейки(r, 8) контактируют. Значение = .Ячейки (r, 5) Контактный телефон. Значение = .Ячейки(r, 6) заканчиваются, если следующее r заканчивается на