Hallo zusammen,
ich schreibe gerade an einem (für mich) größeren VBA Makro in Excel 2010. Ich muss dort quasi in jeder zweiten Zeile einen Wert in eine Zelle ausgeben und würde mir gerne ersparen jedes mal Sheets("Tabelle1").Range("A1").Value schreiben zu müssen. Ich dachte mir das müsste sich doch gut mit einer Funktion lösen lassen. Ich habe jetzt also folgenden Code:
Sub berechnung()
Dim A as Double
Dim B as Double
Dim C as Double
B = 5
C = 10
A = B * C
ausgabe("A1") = A
End Sub
Function ausgabe(x as string)
ausgabe = Sheets("Tabelle1").Range(x).Value
End Function
Damit bekomme ich allerdings beim ausführen von berechnung den "Laufzeitfehler 424: Objekt erforderlich" in der Zeile "ausgabe("A1") = a". Ich habe leider nur wenig Kenntnisse was VBA angeht und habe mir auch die nur selbst angelesen. Ich bin mir also ziemlich sicher das der Fehler offensichtlich ist und ich die Funktionsweise von Funktionen falsch verstehe. Kann mir bitte jemand erklären warum der Code nicht funktioniert? Ich dachte wenn ich "ausgabe("A1") aufrufe wäre das das selbe als würde ich "Sheets("Tabelle1").Range("A1").Value" schreiben und diese Zeile wäre damit gleichbedeutend mit der Zeile "Sheets("Tabelle1").Range("A1").Value = A" die mir ja in meinem Beispiel eine 50 in Zelle A1 schreiben sollte.
Als das nicht ging habe ich folgendes probiert:
Sub berechnung()
Dim A as Double
Dim B as Double
Dim C as Double
B = 5
C = 10
A = B * C
ausgabe("A1", A)
End Sub
Function ausgabe(x as string, y as string)
Sheets("Tabelle1").Range(x).Value = y
End Function
Hier bekomme ich aber gleich wenn ich die Zeile "ausgabe("A1", "A") verlassen will die Meldung "Fehler beim Kompilieren: Erwartet: =". Auch hier bin ich mir wieder sicher das ich was Grundlegendes falsch verstehe. Ich dachte ich kann meine Funktion einfach mit meinen beiden Werten "A1" und A aufrufen und die Zeile in der Funktion würde dann wie folgt aussehen:
Sheets("Tabelle1").Range("A1").Value = 50
Warum funktioniert das nicht? Und vor allem: Wie mache ich es richtig?
|