Supportnet / Forum / Tabellenkalkulation
Mit Makro Formel in Zelle einfügen
Frage
Hallo
Ich möchte mit einem auto_open Makro eine Formel in die 2. Zelle der ersten leeren Zeile am Ende der Datenbank einfügen
Wie mache ich das? habe es bis jetzt nicht geschafft, auch nicht mit aufzeichnen.
Danke
Antwort 1 von Guenter
Hallo,
in der VB-Hilfe habe ich folgendes gefunden:
Das beschriebene Beispiel scheint bei mir zu funktionieren.
Weist Du wie man die "2. Zelle der ersten leeren Zeile" findet?
Gruß
Günter
in der VB-Hilfe habe ich folgendes gefunden:
Zitat:
Einfügen einer Tabellenfunktion in eine Zelle
Um eine Tabellenfunktion in eine Zelle einzufügen, geben Sie die Funktion als Wert der Formula-Eigenschaft des entsprechenden Range-Objekts an. Im folgenden Beispiel wird die Tabellenfunktion ZUFALLSZAHL (RAND in VBA) der Formula-Eigenschaft des Bereichs A1:B3 in Tabelle1 der aktiven Arbeitsmappe zugewiesen.
Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub
Einfügen einer Tabellenfunktion in eine Zelle
Um eine Tabellenfunktion in eine Zelle einzufügen, geben Sie die Funktion als Wert der Formula-Eigenschaft des entsprechenden Range-Objekts an. Im folgenden Beispiel wird die Tabellenfunktion ZUFALLSZAHL (RAND in VBA) der Formula-Eigenschaft des Bereichs A1:B3 in Tabelle1 der aktiven Arbeitsmappe zugewiesen.
Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub
Das beschriebene Beispiel scheint bei mir zu funktionieren.
Weist Du wie man die "2. Zelle der ersten leeren Zeile" findet?
Gruß
Günter
Antwort 2 von Chrigel
Hallo Günter
Dieses Makro spring zur ersten leeren Zeile in Spalte A und mit offset dann eine Zelle nach rchts
Sub TabelleEingänge()
'
' TabelleEingänge Makro
' Makro am 09.01.2002 von Christian Bachmann aufgezeichnet
Sheets("Eingänge").Select
Sheets("Eingänge").Move Before:=Sheets(1)
Dim Zelle As Object
Dim Spalte As Object
Set Spalte = ActiveSheet.Columns(1)
For Each Zelle In Spalte.Cells
If Trim(Zelle.Value) = "" Then
Zelle.Select
ActiveCell.Offset(0, 1).Select
Exit For
End If
Next
End Sub
Ich möchte mit meinem Makro in dieser Zelle eine Wenn Formel einfügen, leider ist es mir bis jetzt nicht geglückt
Gruss¨
Christian
Dieses Makro spring zur ersten leeren Zeile in Spalte A und mit offset dann eine Zelle nach rchts
Sub TabelleEingänge()
'
' TabelleEingänge Makro
' Makro am 09.01.2002 von Christian Bachmann aufgezeichnet
Sheets("Eingänge").Select
Sheets("Eingänge").Move Before:=Sheets(1)
Dim Zelle As Object
Dim Spalte As Object
Set Spalte = ActiveSheet.Columns(1)
For Each Zelle In Spalte.Cells
If Trim(Zelle.Value) = "" Then
Zelle.Select
ActiveCell.Offset(0, 1).Select
Exit For
End If
Next
End Sub
Ich möchte mit meinem Makro in dieser Zelle eine Wenn Formel einfügen, leider ist es mir bis jetzt nicht geglückt
Gruss¨
Christian
Antwort 3 von want2cu
hallo christian,
mit einem Makro und VBA kann ich dir leider nicht weiterhelfen, Aber vielleicht gibt es ja noch eine andere Aternative mit einer Formel oder einem ganz anderen Lösungsweg.
Was willst du denn erreichen?
Wenn du magst, schick mir doch mal eine kleine Beispieltabelle, ich würde dann gerne mal versuchen, ob es eine Lösung dafür gibt.
CU
Klaus
mit einem Makro und VBA kann ich dir leider nicht weiterhelfen, Aber vielleicht gibt es ja noch eine andere Aternative mit einer Formel oder einem ganz anderen Lösungsweg.
Was willst du denn erreichen?
Wenn du magst, schick mir doch mal eine kleine Beispieltabelle, ich würde dann gerne mal versuchen, ob es eine Lösung dafür gibt.
CU
Klaus
Antwort 4 von YoMan
Hi,
sub workbook_open()
set tb = thisWorkbook.Worksheets("Keine Ahnung")
x = 1 'Ab Zeile 1
y = 1 'Ab Spalte A
do while tb.cells(x,y) <> ""
y=y+1 ' nächste Spalte gleiche Zeile
Loop 'weiter gehts
'Nun hamma eine Leere Zelle und schreiben:
tb.cells(x,1).Formula = "was auch immer...."
End sub
Grüsse
Yo
sub workbook_open()
set tb = thisWorkbook.Worksheets("Keine Ahnung")
x = 1 'Ab Zeile 1
y = 1 'Ab Spalte A
do while tb.cells(x,y) <> ""
y=y+1 ' nächste Spalte gleiche Zeile
Loop 'weiter gehts
'Nun hamma eine Leere Zelle und schreiben:
tb.cells(x,1).Formula = "was auch immer...."
End sub
Grüsse
Yo
Antwort 5 von sicci
Hallo Chrigel,
'Wenn' heißt in VBA 'if', aber das ist sicher nicht Deine Schwierigkeit bei der Übersetzung Deiner Formel.
Um Deine konkrete Formel umzusetzen mach folgendes: Schreib sie einmalig in eine Zelle, hier zB A40, und lasse Dir im Direktfenster per:
Debug.print range("A40").formula.
die Übersetzung anzeigen, die Du dann mit evtll. Variablen auffüllen/anpassen kannst.
Gruß
sicci
'Wenn' heißt in VBA 'if', aber das ist sicher nicht Deine Schwierigkeit bei der Übersetzung Deiner Formel.
Um Deine konkrete Formel umzusetzen mach folgendes: Schreib sie einmalig in eine Zelle, hier zB A40, und lasse Dir im Direktfenster per:
Debug.print range("A40").formula.
die Übersetzung anzeigen, die Du dann mit evtll. Variablen auffüllen/anpassen kannst.
Gruß
sicci
Antwort 6 von sicci
Hallo Christian,
Noch ein Beispiel (inkl. kleiner Verkürzung Deines Makros):
Sub Makro1()
...
Dim Zelle As Object
Dim Spalte As Object
Set Spalte = ActiveSheet.Columns(1)
For Each Zelle In Spalte.Cells
If Trim(Zelle.Value) = "" Then
Zelle.Offset(0, 1).Formula = "=IF(SUM(A1:A12)>100,""ja"",""nein"")"
Exit For
End If
Next
End Sub
Debug.Print gibt für die Beispiel-Wenn-Formel =IF(SUM(A1:A12)>100,"ja","nein") aus. Dies kann direkt in die Anführungszeichen der Formula-Anweisung im Makro eingesetzt werden, nur die Anführungszeichen innerhalb der Formel (die VBA ja als Anfang-/Ende-Tags erkennt) müssen verdoppelt werden.
Gruß
sicci
Noch ein Beispiel (inkl. kleiner Verkürzung Deines Makros):
Sub Makro1()
...
Dim Zelle As Object
Dim Spalte As Object
Set Spalte = ActiveSheet.Columns(1)
For Each Zelle In Spalte.Cells
If Trim(Zelle.Value) = "" Then
Zelle.Offset(0, 1).Formula = "=IF(SUM(A1:A12)>100,""ja"",""nein"")"
Exit For
End If
Next
End Sub
Debug.Print gibt für die Beispiel-Wenn-Formel =IF(SUM(A1:A12)>100,"ja","nein") aus. Dies kann direkt in die Anführungszeichen der Formula-Anweisung im Makro eingesetzt werden, nur die Anführungszeichen innerhalb der Formel (die VBA ja als Anfang-/Ende-Tags erkennt) müssen verdoppelt werden.
Gruß
sicci

