Ankündigung

Einklappen
Keine Ankündigung bisher.

VBA Variablenproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    VBA Variablenproblem

    Hi,

    folgendes Problem.

    Ich habe 2 Module.

    In Modul1 würde ich gerne eine Art set- und eine get-Funktion anwenden.
    Die Funktion kopiereDetail() soll einen Zelleninhalt aus einer Inputdatei in die Variable detailbezeichnung setzen.

    Die Funktion schreibeDetail() soll den Wert der Variable detailbezeichnung in die Outputdatei in eine komplette Range schreiben. Die Range ist ein Spaltenabschnitt.


    Modul1

    Dim detailbezeichnung As String

    Function kopiereDetail(inputTabellenblatt As Workbook, inputTabellenblattname As String, inputZeile As Integer, inputSpalte As Integer)


    detailbezeichnung = inputTabellenblatt.Worksheets(inputTabellenblattna me).Cells(inputZeile, inputSpalte)


    End Function

    Function schreibeDetail(outputTabellenblatt As Workbook, outputTabellenblattname As String, outputSpalte As Integer, outputZeilenAnfang As Integer, outputZeilenEnde As Integer)

    With outputTabellenblatt.Worksheets(outputTabellenblatt name)
    .Range(.Cells(outputZeilenAnfang, outputSpalte), .Cells(outputZeilenEnde, outputSpalte)) = detailbezeichnung
    End With

    End Function
    ´

    Nun habe ich das Modul2 in der ich in einer Sub mir Datensätze aus der Inputdatei zusammen baue und die Überschriften usw. vor die Datensätze schreiben möchte.


    Modul2

    ...

    'Überschrift 1 aus Zelle [C2] kopieren
    modul1.kopiereDetail INPUTDATEI, "Overview", 2, 3

    'Überschrift 1 in Range [D2:D233] eintragen
    modul1.schreibeDetail OUTPUTDATEI, "NeuBedraf", 4, 2, 233

    ...
    Der Code funktioniert, wenn ich alles in eine Funktion schreibe. Sprich in der Inputdatei auslesen und in der Zieldatei dann gleich eintragen.

    Aber wenn ich das in zwei Funktionen unterteile, dann wird mir die übergeordnete Variable detailbezeichnung nicht gesetzt und es wird der Wert 'leer' in der Funktion schreibeDetail verwendet.

    Weis jemand, wieso ich mit meinen Funktionen nicht die Variable detailbezeichnung setzen und wieder abrufen kann?


    Sonst hat es in anderen Dateien mit der Variablenübergabe funktioniert -.-


    Vielen Dank fürs weiterhelfen


    #2
    http://support.microsoft.com/kb/141693

    When a local variable is declared with the Dim statement, the variable remains in existence only as long as the procedure in which it is declared is running.

    Evtl. liegts daran?

    Kommentar


      #3
      Zitat von slayer
      http://support.microsoft.com/kb/141693

      When a local variable is declared with the Dim statement, the variable remains in existence only as long as the procedure in which it is declared is running.

      Evtl. liegts daran?

      Ich habe mir ähnliches auch schon überlegt.
      Aber ich glaube nicht, dass das der Fall ist, da meines Wissens die Module alle Laufen, wenn das Makro gestartet wird.

      Mir ist eher unerklärlich, wieso ich nicht in der Lage bin mit dem Debugger den Wert der Variable detailbezeichnung abzufragen.

      Kommentar

      Lädt...
      X