Я новичок в Excel VBA, и я нашел решения большинства своих проблем через Stackoverflow.com. Но все же есть проблема, которую я не смог решить. Я работаю над многомерной формой пользователя для поддержки нашей базы данных. Пользовательская форма, над которой я работаю, содержит поля параметров, флажки, текстовые поля и поля со списком. После долгих поисков и работы починил поисковые днища и все они работают. Но я не могу заставить работать нижнюю часть обновления и нижнюю часть удаления. Я загрузил файл, буду благодарен, если кто-нибудь поможет мне с этим вопросом.
Private Sub bt2_Click() 'Update shipment
Dim sonsat As Long, sor As String
If ListBox1.ListIndex = -1 Then
MsgBox "Choose an item", vbExclamation, ""
Exit Sub
End If
sor = MsgBox("Are your sure?", vbYesNo, "")
If sor = vbNo Then Exit Sub
lastrow = Sheets("logbook").Cells(Rows.count, 1).End(xlUp).Row
Sheets("logbook").Range("A1:A" & lastrow).Find(What:=ListBox1.Value,
LookIn:=xlValues, LookAt:=xlWhole).Activate
sonsat = ActiveCell.Row
Cells(sonsat, 1) = op1
Cells(sonsat, 2) = op2
Cells(sonsat, 3) = chb1
Cells(sonsat, 4) = chb2
Cells(sonsat, 5) = tb14
Cells(sonsat, 6) = tb1
Cells(sonsat, 7) = tb2
Cells(sonsat, 8) = tb3
Cells(sonsat, 9) = tb4
Cells(sonsat, 10) = tb5
Cells(sonsat, 11) = cb1
Cells(sonsat, 12) = tb6
Cells(sonsat, 13) = tb7
Cells(sonsat, 14) = tb8
Cells(sonsat, 15) = tb9
Cells(sonsat, 16) = cb2
Cells(sonsat, 17) = tb10
Cells(sonsat, 18) = tb11
Cells(sonsat, 19) = tb12
Cells(sonsat, 20) = cb3
Cells(sonsat, 21) = cb4
Cells(sonsat, 22) = tb13
MsgBox "Item Has Been Changed", vbInformation, ""
ListBox1.list = Sheets("logbook").Range("A1:V" &
Sheets("logbook").Cells(Rows.count, 1).End(xlUp).Row).Value
If Me.op1.Value = True Then
Cells(sonsat, 1).Value = "X"
Else
Cells(sonsat, 1).Value = "-"
End If
If Me.op2.Value = True Then
Cells(sonsat, 2).Value = "X"
Else
Cells(sonsat, 2).Value = "-"
End If
If Me.chb1.Value = True Then
Cells(sonsat, 3).Value = "X"
Else
Cells(sonsat, 3).Value = "-"
End If
If Me.chb2.Value = True Then
Cells(sonsat, 4) = "X"
Else
Cells(sonsat, 4) = "-"
End If
End Sub
Private Sub bt3_Click() 'delete shipmet
Dim sil As Long
Dim e, b, c, d As Integer
If ListBox1.ListIndex = -1 Then
MsgBox "Choose an entry", vbExclamation, ""
Exit Sub
End If
If ListBox1.ListIndex >= 0 Then
cevap = MsgBox("Entry will be deleted. ... Are you sure ?", vbYesNo, "")
If cevap = vbYes Then
Sheets("logbook").Range("A:A").Find(What:=ListBox1.Value).Activate
sil = ActiveCell.Row
Sheets("logbook").Rows(sil).Delete
End If
End If
For d = 1 To 2
Controls("op" & d) = False
Next
For c = 1 To 4
Controls("cb" & c) = "-"
Next
For b = 1 To 2
Controls("chb" & b) = False
Next
For e = 1 To 14
Controls("tb" & e) = ""
Next
ListBox1.list = Sheets("logbook").Range("A1:V" &
Sheets("logbook").Cells(Rows.count, 1).End(xlUp).Row).Value
End Sub
Sub
s. Лично я бы добавилOption Explicit
в верхней части кода, который заставит вас объявить свои переменные, но также может автоматически выделить другие проблемы. - person Steve Lovell   schedule 07.06.2017cb1.value
простоcb1
. Я бы попробовал первое, хотя не думаю, что это может быть причиной. При обновлении ячеек вы не указываете лист. Возможно, это не проблема, но я бы это проверил. - person Steve Lovell   schedule 07.06.2017.value
. - person Steve Lovell   schedule 07.06.2017&
, возможно, это не то, что у вас есть на самом деле, но лучше сначала проверить «легкие» возможности! - person Steve Lovell   schedule 08.06.2017Debug.Print Listbox1.Value
? Идея состоит в том, чтобы проверить, что кузнечное дело действительно работает, поиск найдет. Я думаю, это должно сработать, поскольку вы сказали, что ваш поиск работает. - person Steve Lovell   schedule 08.06.2017