2017-11-23 2 views
1

ich einen Code haben, die ich in einem anderen Makro verwendet und wotked, dass jetzt nicht funktioniert und ich erhalte immer Laufzeitfehler 1004 in der Zeile mit activate:Excel VBA Activate-Methode des Range-Klasse ist fehlgeschlagen

Sub initialize() 

dim MonthName as string 
dim MainWB as workbook 
dim VisualWS as worksheet 

MonthName = cells (1,1).value 
Set MainWB = ThisWorkbook 
Set VisualWS = MainWB.Worksheets("Visual") 

With VisualWS 
    .Range("L1:W1").Find(MonthName, , xlValues, xlWhole).Activate 
End With 

MonthCol = ActiveCell.Column 

End Sub 
+0

Könnten Sie manuell die gewünschte Zelle finden? – MarcinSzaleniec

+0

@MarcinSzaleniec ja, warum? –

Antwort

1

nach dem docs on Range.Find , die "Methode gibt Nothing zurück, wenn keine Übereinstimmung gefunden wird."

Wahrscheinlich findet Ihre Methode .Range(). Find() keine Übereinstimmungen und gibt daher Nothing zurück, die keine Funktion Activate hat.

Versuchen Sie stattdessen:

Dim findResult As Range 
Set findResult = .Range("L1:W1").Find(MonthName, , xlValues, xlWhole) 
If findResult <> Nothing then findResult.Activate 
0

Find könnte gut Nothing zurückkehren, so würde ich lieber schreiben:

With VisualWS 
    set target = .Range("L1:W1").Find(MonthName, , xlValues, xlWhole) 
End With 
If target is Nothing Then 
    DoSomething 
else 
    MonthCol = target.Cells(1,1).Column 
End if 

(ungetestet)

+0

[Falsch] (https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-activate-method-excel) - Aktivieren markiert eine einzelne Zelle in einer Auswahl als aktiv. –

+0

Ernsthaft? Sie haben buchstäblich Ihre vorherige (** falsche **) Antwort entfernt und sie durch das ersetzt, was ich bereits gepostet habe !? –

+0

@E.Villiger Habe dich nicht gesehen, bevor ich meinen repariert habe. Aber danke für die -1 :-) –

Verwandte Themen