Microsoft Excel

Herbers Excel/VBA-Archiv

Formel mit VBA in Zelle schreiben

Betrifft: Formel mit VBA in Zelle schreiben von: peter
Geschrieben am: 16.09.2004 14:48:41

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
  


Betrifft: AW: Formel mit VBA in Zelle schreiben von: Katja
Geschrieben am: 16.09.2004 15:09:43

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


  


Betrifft: AW: Formel mit VBA in Zelle schreiben von: MadMan
Geschrieben am: 16.09.2004 15:29:15

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


  


Betrifft: AW: Formel mit VBA in Zelle schreiben von: Reinhard
Geschrieben am: 16.09.2004 15:46:49

Hi Mad,
probier mal:
Zelle=ActiveCell.Address(0,0) bzw
Zelle=ActiveCell.Address(False,False)
Gruß
Reinhard


  


Betrifft: AW: Formel mit VBA in Zelle schreiben von: peter
Geschrieben am: 16.09.2004 15:30:34

Danke erstmal für eure Antworten.
Aber leider funktioniert das auch nicht.
Der Code bleibt bei der Formel hängen.

gruss
Peter


  


Betrifft: AW: Formel mit VBA in Zelle schreiben von: Reinhard
Geschrieben am: 16.09.2004 15:17:00

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


  


Betrifft: AW: Formel mit VBA in Zelle schreiben von: Stephan
Geschrieben am: 16.09.2004 15:24:07

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.


  


Betrifft: AW: Super von: peter
Geschrieben am: 17.09.2004 07:00:01

Stephans Code funktioniert.
Danke aber auch an alle Anderen.
Gruss
Peter


  


Betrifft: AW: Formel mit VBA in Zelle schreiben von: Katja
Geschrieben am: 16.09.2004 15:47:52

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


 

Beiträge aus den Excel-Beispielen zum Thema "Formel mit VBA in Zelle schreiben"