goodbytes
Goto Top

Excel-VBA Variable in andere Arbeitsmappe übernehmen

Hallo,
ich habe da ein kleines Problem.

Ich habe zwei Arbeitsmappen erstellt. Die erste Mappe soll die zweite Mappe aufrufen und aus dieser nach Auswahl der Checkboxen in einem Tabellenblatt Daten in die erste Mappe kopieren.

Die zweite Mappe wird auch durch die erste gestartet, ebenfalls das dort enthaltene Makro. Dann stoße ich auf einen Fehler, dass ein Objekt nicht vorhanden wäre. Zwischenzeitlich funktionierte es auch mal kurz. Ich weiss nur nicht warum jetzt nicht mehr.

Der Debugger springt nach der Fehlermeldung immer in dir Zeile der ersten Mappe, wo das Makro der zeiten Mappe gestartet und die Variablen übergeben werden.

Hier die wichtigsten Teile des Codes.

Erste Mappe:

Public StartZeile As Variant
Public LetzteZelle As Variant
Public Datei As Variant
Public Grenzwertdatei As String

Sub Grenzwerte()

Datei = ThisWorkbook.Path & "\" & ThisWorkbook.Name  
Grenzwertdatei = ThisWorkbook.Path & "\Grenzwerte.xls"  

If Dir(Grenzwertdatei) = "" Then  
    MsgBox "Die Datei mit den Grenzwerten existiert nicht."  
End If

Workbooks.Open (Grenzwertdatei)
Application.Run "Grenzwertdatei & "!GW_001", Datei, StartZeile.Row, LetzteZeile.Row  

End Sub

Die Startzeile wird an einer anderen Stelle ermittelt; das funktioniert auch.

Zweite Mappe:

Option Explicit
Public i As Integer
Public b As Integer
Public Start As Integer
Public Schluss As Variant
Public Dateiname As String

Public Sub GW_001(StartZeile As Variant, LetzteZelle As Variant, Datei As String)

    On Error Resume Next
    Start = StartZeile
    Schluss = LetzteZelle
    Dateiname = Datei

    Application.ScreenUpdating = False
    
    i = Start
    b = 2

    For i = 1 To 50
        b = b + 1
        
    If Range("B" & i).Value = "Wahr" Then  
        Workbooks(Dateiname).Sheets(2).Range("A" & i).Value = Workbooks("Grenzwerte.xls").Range("C" & b).Value  
        Workbooks(Dateiname).Sheets(2).Range("B" & i).Value = Workbooks("Grenzwerte.xls").Sheets(1).Range("D1").Value  
        Workbooks(Dateiname).Sheets(2).Range("D" & i).Value = Workbooks("Grenzwerte.xls").Sheets(1).Range("D" & b).Value  
    Else
    MsgBox Start & "   " & Dateiname  
        Workbooks(Dateiname).Sheets(2).Range("A" & Start & ":D" & Schluss).ClearContents  
    
    End If
    Next i
    
Ende:
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
        
End Sub

Ich habe schon alle Tipps aus dem Internet probiert; ohne Erfolg.

Wie kann ich die Variablen korrekt übergeben?

Danke schon mal im voraus !!!

Gruß
Torsten

Anmerkung am 18. September 2011:

Mit dem Variablen übergeben hat es dann auch geklappt; ich habe es aber jetzt im nachhinein anders gelöst, da es auch noch andere Probleme gab.
Alle Makros stecken jetzt in der ersten Mappe; diese zieht sich die Datensätze dann aus den anderen Mappen. Ist ohnehin die sauberste Lösung denke ich.

Content-Key: 172690

Url: https://administrator.de/contentid/172690

Printed on: April 18, 2024 at 08:04 o'clock

Member: bastla
bastla Sep 07, 2011 at 06:19:59 (UTC)
Goto Top
Hallo TorstenB!
Wie kann ich die Variablen korrekt übergeben?
Hast Du es schon einmal mit der Reihenfolge, in der sie vom aufgerufenen Sub erwartet werden, versucht?

Eine gerade Anzahl von Anführungszeichen in Zeile 16 wäre vermutlich auch hilfreich ... face-wink

Grüße
bastla