Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dynamisches Generieren von Formeln innerhalb VBA

Dynamisches Generieren von Formeln innerhalb VBA
26.02.2008 16:24:22
Formeln
Hallo Experten,
ich brauch mal wieder Eure Mithilfe.
In dem maximal C58:P63 umfassenden Bereich möchte ich mittels folgender Function
dynamisch Formeln nach diesem Schema generieren:
=WENN($AC$36=0;SUMME(C4:C9)*24;SUMME(C4:C9))
Hier die Function:

Public Sub Wochensummen()
Dim byt_Zeile, byt_Spalte As Byte
Dim int_WoA, int_WoE, int_test As Integer
Dim str_TeilFormel, str_Formel As String
'    On Error GoTo HandleError
'    Application.DisplayAlerts = False
byt_Zeile = 58
While Cells(byt_Zeile, 1).Value  ""
MsgBox ("Zeile:" + Str(byt_Zeile))   ' Debug-Ausgabe: aktuelle Zeile
'=WENN(TAG(B58)>34;"";TAG(B58)+3)
int_WoA = Day(Cells(byt_Zeile, 2).Value) + 3
MsgBox ("1. Zeile: " + Str(int_WoA))	' Debug-Ausgabe: dynamisch ermittelter Index der 1. _
Summenzeile
'=WENN(TAG(B58)+10>34;34;TAG(B58+7)+2-WOCHENTAG(B58+7;3))
int_test = Day(Cells(byt_Zeile, 2).Value) + 10
If int_test > 34 Then
int_WoE = 34
Else
int_WoE = Day(Cells(byt_Zeile, 2).Value) + 9 - Weekday(Cells(byt_Zeile, 2).Value,  _
vbTuesday)
End If
MsgBox ("x. Zeile: " + Str(int_WoE))	' Debug-Ausgabe: dynamisch ermittelter Index der  _
letzten Summenzeile
For byt_Spalte = 3 To 16
str_TeilFormel = "=SUM(" & Chr(64 + byt_Spalte) & "[" & Str(int_WoA) & "]:" & Chr( _
64 + byt_Spalte) & "[" & Str(int_WoE) & "])"
MsgBox ("TeilFormel: " + str_TeilFormel)     ' Debug-Ausgabe: Teilformel
'=WENN($AC$36=0;SUMME(C4:C9)*24;SUMME(C4:C9))
str_Formel = "=IF($AC$36=0;" & str_TeilFormel & "*24;" & str_TeilFormel & ")"
MsgBox ("Formel: " + str_Formel)          ' Debug-Ausgabe: Endformel
' UND HIER KRACHT ES JETZT
Cells(byt_Zeile, byt_Spalte).FormulaR1C1 = str_Formel
' UND ICH KOMM NICHT DRAUF, WARUM
Next
byt_Zeile = byt_Zeile + 1
Wend
'    Application.DisplayAlerts = True
'    Exit Sub
'HandleError:
'    Call ErrHandler("[frm_Sheetformat] Sub Wochensummen()")
'    Resume Next
End Sub


In der abgesetzten Codezeile, wo ich die generierte Formel zuweisen möchte, kracht's mit einem Laufzeitfehler 1004.
Ich hab grad ne Denkblockade und komme nicht weiter.
Wäre super, wenn mir hier jemand auf die Sprünge helfen könnte.
Danke,
Roland

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamisches Generieren von Formeln innerhalb VBA
26.02.2008 16:59:00
Formeln
Hallo Roland,
strFormel (der Formeltext) enthält bei dir Semikolons. Im VBA-Code (der spricht meist in Englischer(US)-Version) muss hier im Formeltext ein Komma stehen.
Am besten ist es die gewünschte Formel mit dem Recorder aufzuzeichnen, dann hat man die korrrekte Syntax für den VBA-Code. Danach dann die variablen Teile einbauen.
Gruß
Franz

AW: Dynamisches Generieren von Formeln innerhalb VBA
26.02.2008 17:46:00
Formeln
HAllo Roland
Ich kann deinen Code nicht nachvollziehen, aber du kannst eine Formel auch ganz direkt in einen Zellbereich schreiben.
Ohne diesen Umweg über die ganzen Stringmanipulationen:
Schau es dir mal an:
Public Sub test()
With Sheets("Tabelle1")
    .Range("C58:P63").FormulaLocal = "=WENN($AC$36=0;SUMME(C4:C9)*24;SUMME(C4:C9))"
    '.Range("C58:P63").Value = .Range("C58:P63").Value 'In Festwerte wandeln
    'oder
    .Range("A1:C10").FormulaLocal = "=WENN(TAG(B58)>34;"""";TAG(B58)+3)" 'Achte auf die 4 """"
    '.Range("A1:C10").Value = .Range("A1:C10").Value 'In Festwerte wandeln.
End With
End Sub

ransi

Anzeige
AW: Dynamisches Generieren von Formeln innerhalb VBA
27.02.2008 13:18:03
Formeln
Danke,
mit .FormulaLocal klappt es.
Auf die umfangreichen Stringmanipulationen kann ich nicht verzichten, da ich in einer Schleife den Zellbereich mit den Formeln versorge, muss also Spaltenbezeichner (C, D, E, ...) sowie auch die Zeilennummern innerhalb der Schleife generieren.
Gruß
Roland

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige