2016-04-05 11 views
-1

Während dies nicht das erste Mal ist, dass ich Makros wie dieses schreibe, kann ich nicht herausfinden, wie ich das zum Laufen bekomme. Ich habe eine darunter geschnitten, dass ich denke, sollte funktionieren, aber nicht.Wie kann ich ActiveWorkbook/Workbooks (Name) verwenden, ohne einen Laufzeitfehler 91 in Excel 2013 VBA zu erhalten?

Mein Problem ist, dass zu Beginn meiner Arbeit Tag, während der snipped arbeitete genau einmal, dann aber immer die '91 Runtime Error erhalte ich: Objektvariable oder with-Blockvariable nicht gesetzt Fehlermeldung.

Ich habe zwei Arbeitsmappen geöffnet, und ich wählte Zellen in der Arbeitsmappe, die ich mit manuell vor dem Start des Makros arbeiten wollte.

Option Explicit 
Sub test() 

Dim source, sheet As Worksheet 
Dim sourcename As String 
Dim targetname As String 
Dim test As Workbook 
Workbooks("Test.xlsm").Activate 
test = ActiveWorkbook 
Debug.Print (test.Name) 

sourcename = "Tabelle1" 
targetname = "Tabelle2" 

Set sheet = ActiveWorkbook.Worksheets(sourcename) 
Set source = ActiveWorkbook.Worksheets(targetname) 

Debug.print(sheet.Name) 
Debug.print(source.Name) 

End Sub 

Der Fehler tritt in der Zeile mit test = ActiveWorkbook

EDIT: Nachdem die anfänglichen Set Fehler behoben wurden, die Blatt und Quelle Variablen sind noch leer, so dass jeder eines anderen Fehler verursacht von diesem Typ.

Was ist das Problem hier und wie kann ich es beheben?

+1

ich diese Fragen gefunden haben, die rela scheinen ted, aber ich kann nicht sehen, dass sie in meinem Fall funktionieren: [Fehler "Objektvariable oder Mit Blockvariable nicht gesetzt"] (http://stackoverflow.com/questions/17691458/getting-error-object-variable-or -with-block-variable-not-set) und [VBA run-time error '91': Objektvariable oder With block variable nicht gesetzt] (http://stackoverflow.com/questions/26551262/vba-run-time- error-91-object-variable-oder-mit-block-variable-not-set) –

+0

Beide Qs weisen Sie auf die Antwort: Verwenden Sie 'Set' –

+0

@chrisneilsen ja, In diesem Fall scheint es, ich brauchte nur ein zweites Paar von Augen, wie ich das seit zwei Stunden gesehen habe, obwohl ich die gleichen Methoden ein Dutzend Mal zuvor verwendet habe. –

Antwort

0

Zwei Themen hier:

1st- sowohl Variable und Sub nicht den gleichen Namen geben, haben Sie 'Test' für beide

2nd- Set vor diesem test = ActiveWorkbook wie Set test = ActiveWorkbook

Zeile hinzufügen

Denken Sie daran-Sub-Namen in andere etwas ändern dann test

+0

Es scheint, dass, während der Fehler zuerst entfernt wurde, mein Beispiel fehlerhaft war: Nach dem 'set sheet = ActiveWorkbook.Worksheets (sourcenname)' die Variable ist immer noch leer, entsprechend dem Debugger –

+0

kopieren - fügen Sie Ihren aktuellen Code in Frage mit ein Geänderter Name und 'set' hinzugefügt, wo erforderlich. Als nächstes werde ich versuchen, wieder zu helfen –

Verwandte Themen