Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
484to488
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel mit VBA in Zelle schreiben

Formel mit VBA in Zelle schreiben
16.09.2004 14:48:41
peter
Hallo Excels,
sieht jemand den Fehler in meinem Code.
er will einfach nicht die Formel in die Zelle schreiben.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zelle
zelle = ActiveCell.Address
If Target.Column <> 1 Then Exit Sub
ActiveCell.Offset(0, 14).Select
ActiveCell.FormulaR1C1 = _
"=IF(SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20])=0,"""",SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20]))"
'R[3059]C
ActiveCell.Offset(0, -14).Select
End Sub

Danke schon mal
Gruss Peter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel mit VBA in Zelle schreiben
16.09.2004 15:09:43
Katja
Hallo Peter
Versuch mal

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zelle
zelle = ActiveCell.Address
If Target.Column <> 1 Then Exit Sub
Application.EnableEvents = False
ActiveCell.Offset(0, 14).Select
ActiveCell.FormulaR1C1 = _
"=IF(SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20])=0,"""",SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20]))"
'R[3059]C
ActiveCell.Offset(0, -14).Select
Application.EnableEvents = True
End Sub

Indem du mit dem Befehl ActiveCell.Offset(0, 14).Select wieder eine Zelle aktivierst, wird die Sub sofort wieder aufgerufen. Mit Application.EnableEvents kannst du das ausschalten, aber nicht vergessen wieder einzuschalten!
Gruss Katja
Anzeige
AW: Formel mit VBA in Zelle schreiben
16.09.2004 15:29:15
MadMan
Hallo Peter,
ich hab mir das mal angesehen und festgestellt, dass das Ganze dann klappt, wenn die Variable "zelle" nicht als absoluter Wert sondern relativ (also ohne $) angegeben wird. Kannst das ja mal testen. Ich hab dazu einfach Zelle noch mal editiert, nach "zelle = ActiveCell.Adress" mit:
zelle = Mid(zelle, 2, 1) & Mid(zelle, 4, 1)
Versuch es mal.
Eine bessere Lösung habe ich leider nicht.
Gruß,
MadMan
AW: Formel mit VBA in Zelle schreiben
Reinhard
Hi Mad,
probier mal:
Zelle=ActiveCell.Address(0,0) bzw
Zelle=ActiveCell.Address(False,False)
Gruß
Reinhard
AW: Formel mit VBA in Zelle schreiben
16.09.2004 15:30:34
peter
Danke erstmal für eure Antworten.
Aber leider funktioniert das auch nicht.
Der Code bleibt bei der Formel hängen.
gruss
Peter
Anzeige
AW: Formel mit VBA in Zelle schreiben
Reinhard
Hi Peter,
die Formel an sich ist mir zu lang, nochdazu versuche ich immer die R1C1-Schreibweise zu vermeiden. Deshalb habe ich deine Frage als noch offen gekennzeichnet.
Aber ich habe deinen Code an sich gekürzt.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zelle
zelle = ActiveCell.Address
If Target.Column <> 1 Then Exit Sub
Target.Offset(0,14).FormulaR1C1 = _
"=IF(SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20])=0,"""",SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20]))"
'R[3059]C
End Sub

Gruß
Reinhard
Anzeige
AW: Formel mit VBA in Zelle schreiben
16.09.2004 15:24:07
Stephan
Lieber Peter,
es sind zwei Schwierigkeiten in Deinem Code: erstens wird die event sub durch die .Select Aufrufe staendig rekursiv aufgerufen. Zum zweiten hast Du die A1-Addressierung (default fuer .Address) und R1C1-Notation vermischt, darum schreibt er die Formel nicht. Folgendes hat bei mir funktioniert:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zelle
zelle = ActiveCell.Address(ReferenceStyle:=xlR1C1)
If Target.Column <> 1 Then Exit Sub
ActiveCell.Offset(0, 14).FormulaR1C1 = _
"=IF(SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20])=0,"""",SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20]))"
End Sub

Herzlichst,
Stephan.
Anzeige
AW: Super
17.09.2004 07:00:01
peter
Stephans Code funktioniert.
Danke aber auch an alle Anderen.
Gruss
Peter
AW: Formel mit VBA in Zelle schreiben
Katja
Kopiere diese Programm mal und versuche es (bei mir hats so funktioniert):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zelle
zelle = ActiveCell.Address
If Target.Column <> 1 Then Exit Sub
Application.EnableEvents = False
ActiveCell.Offset(0, 14).Select
ActiveCell.FormulaR1C1 = "IF(SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20])=0,"""",SUMIF('[WE_2004.xls]2004'!C[5]:C[20]," & zelle & ",'[WE_2004.xls]2004'!C[20]))"
'R[3059]C
ActiveCell.Offset(0, -14).Select
Application.EnableEvents = True
End Sub

Gruss Katja
Anzeige

350 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige