Ich musste Excel VBA nicht in einer Weile verwenden, aber ich beschloss, es auszugraben, um ein paar benutzerfreundliche und zugängliche Vorlagen für die Verfolgung von monatlichen Sendungen zu erstellen.Excel VBA - Objekt erforderlich
Diese spezielle Suchfunktion gibt mir Kopfschmerzen und ich vermute, es liegt daran, dass ich mit der Syntax ziemlich eingerostet bin.
Ich habe mich an diesen Punkt, wo ich ein 'Objekt erforderlich' Fehler beim Aufruf eines Benutzerformulars erhalten, aber von dem, was ich sehen kann von Schritt durch, ich habe explizit erklärt und definiert alles im Zusammenhang mit dem Problem Linie.
Schätzen Sie jede Hilfe/Refresher. Mein Gesicht wartet gespannt auf meine Handfläche.
Edit: Aktuelle Code arbeitet in Antwort geschrieben unter
Voll Code
Private Sub UserForm_Initialize()
'Clear result message
Me.rResult.caption = ""
'BOL (cached)
Dim BOL As Range
Set BOL = ThisWorkbook.Sheets("Values").Range("$A$3")
'Addresses (cached)
Dim addr As Range
Set addr = ThisWorkbook.Sheets("Values").Range("$A$4:$D$21")
Dim i As Range
'Search Range
Dim srange As Range
'Target Range
Dim trange As Range
'First result
Dim fr As Range
'Result counter
Dim c As Integer
c = 0
With ThisWorkbook.ActiveSheet
'Set search range
Set srange = .Range(.Cells(7, 6), _
.Cells(.Cells(Rows.Count, 5).End(xlUp).Row, _
.Cells(6, Columns.Count).End(xlToLeft).Column))
'Find search results in search range
Set trange = srange.Find(BOL.Value, LookIn:=xlValues)
'If the cell is not empty and the header in row 6 has a value of "BOL"
If Not trange.Value Is Nothing Then '***Problem Line***
If .Cells(6, trange.Value).Value = "BOL" Then
'set first address
Set fr = .Range(trange.Address)
Do
'result counter
c = c + 1
'save each address within cache range
For Each i In addr
If i.Value = "" Then i.Value = trange.Address
Next i
Set trange = trange.FindNext(trange)
Loop While Not trange Is Nothing And trange.Address <> fr.Address
End If
End If
End With
'Select the first address
If c <> 0 Then fr.Select
'Result message
Me.rResult.caption = "Search found " & c & _
" result(s) for BOL: " & BOL.Value & "."
'clear cached BOL
BOL.Clear
End Sub
'Mein Gesicht wartet sehnsüchtig auf meine palm.' +1 Edit: die Leitungsfehler wirft? – findwindow
@findwindow wahrscheinlich derjenige mit dem Kommentar, der sagt "**** Das ist die Zeile, die den Fehler auslöst. ****';). –
@VincentG danke aber einer, zu faul, um es durchzulesen (OP sollte immer in Frage zu identifizieren). Zwei, haben es nicht gesehen, weil es hinter der Schriftrolle ist (siehe Punkt 1^_ ^). – findwindow