Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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
Inhaltsverzeichnis

.formula = "=SUM(" & "xxx" verursacht Fehler 400

.formula = "=SUM(" & "xxx" verursacht Fehler 400
08.11.2023 16:54:39
TomHoff
Guten Tag zusammen

Ich habe eine Code geschrieben, der "automatisch" mehrere Tabellen mit Stockwerken und Typen erzeugt. (Als Übersicht für Baustellen)
Diese Tabellen haben Ergebniszeilen nach unten und rechts mit Summen und Tabellentotal unten rechts.

Das habe ich soweit hingekriegt.

Nun möchte ich zum Schluss eine Zelle haben, welche alle Tabellentotal zusammenzählt.

Allerdings läuft der Code auf Fehler, ich konnte auch herausfinden welche Zeile.

Der Fehler befindet sich im letzten Abschnitt, ich habe die Zeile kommentiert.
Anscheinend gefällt Excel das Gleich-Zeichen nicht. Wenn man dies wegnimmt oder die Gesamte Zeile kommentiert, funktioniert der Code.

Ich hoffe jemand von euch kann diese Knacknuss lösen :-)

Freundliche Grüsse

Hier der Code:

Sub ErweitereTabellen()

Dim AnzahlHäuser As Integer
Dim AnzahlTypen As Integer
Dim AnzahlStockwerke As Integer
Dim NeueTabelle As ListObject
Dim NeueSpalte As ListColumn
Dim i As Integer
Dim j As Integer
Dim ZeilenIndex As Integer
Dim ZeilenNamen() As String
Dim ws As Worksheet
Dim Offset As Integer
Dim Tabellennamen() As String

' Eingabeaufforderung für die Anzahl der Häuser
AnzahlHäuser = InputBox("Geben Sie die Anzahl der Häuser ein:", "Anzahl der Häuser", 1)

' Überprüfen, ob gültige Werte eingegeben wurden
If AnzahlHäuser 1 Then
MsgBox "Ungültige Anzahl. Die Tabellen wurden nicht erstellt.", vbExclamation
Exit Sub
End If

' Aktuelles Arbeitsblatt
Set ws = ThisWorkbook.Sheets.Add

' Initialisiere das Tabellennamen-Array
ReDim Tabellennamen(1 To AnzahlHäuser)

' Schleife für jedes Haus
For i = 1 To AnzahlHäuser
' Eingabeaufforderungen für die Anzahl der Stockwerke und Typen pro Haus
AnzahlStockwerke = InputBox("Geben Sie die Anzahl der Stockwerke für Haus " & i & " ein:", "Anzahl der Stockwerke", 1)
AnzahlTypen = InputBox("Geben Sie die Anzahl der Typen für Haus " & i & " ein:", "Anzahl der Typen", 1)

' Überprüfen, ob gültige Werte eingegeben wurden
If AnzahlStockwerke 1 Or AnzahlTypen 1 Then
MsgBox "Ungültige Anzahl für Haus " & i & ". Die Tabelle wurde nicht erstellt.", vbExclamation
Else
' Tabelle erstellen und benennen
Set NeueTabelle = ws.ListObjects.Add(xlSrcRange, ws.Range("A2").Offset(Offset, 0).Resize(AnzahlStockwerke + 1, AnzahlTypen + 2), , xlYes)
Dim Tabellenname As String
Tabellenname = "Haus_" & i
NeueTabelle.Name = Tabellenname
Tabellennamen(i) = Tabellenname ' Speichere den Tabellennamen

' Spaltennamen festlegen
Set NeueSpalte = NeueTabelle.ListColumns(1)
NeueSpalte.Name = "Stockwerk"

For j = 2 To AnzahlTypen + 1
Set NeueSpalte = NeueTabelle.ListColumns(j)
NeueSpalte.Name = "Typ " & (j - 1)
Next j

' Spalte "Total pro Stockwerk" hinzufügen
Set NeueSpalte = NeueTabelle.ListColumns(AnzahlTypen + 2)
NeueSpalte.Name = "Total pro Stockwerk"

' Zeilennamen festlegen
ReDim ZeilenNamen(1 To AnzahlStockwerke)
For j = 1 To AnzahlStockwerke
ZeilenNamen(j) = "Stockwerk " & j
Next j

NeueTabelle.ListColumns(1).DataBodyRange.Value = Application.Transpose(ZeilenNamen)

' Überschrift für das Haus
ws.Cells(1, 1).Offset(Offset, 0).Value = "Haus " & i

' Summe der Typen für jedes Stockwerk
For ZeilenIndex = 1 To AnzahlStockwerke
NeueTabelle.ListColumns(AnzahlTypen + 2).DataBodyRange.Cells(ZeilenIndex, 1).Formula = "=SUM(" & NeueTabelle.ListColumns(2).DataBodyRange.Cells(ZeilenIndex, 1).Resize(1, AnzahlTypen).Address & ")"
Next ZeilenIndex

' Summe der Typen für jedes Stockwerk
For j = 2 To AnzahlTypen + 1
NeueTabelle.ListColumns(j).TotalsCalculation = xlTotalsCalculationSum
Next j

' Ergebniszeile anzeigen
NeueTabelle.ShowTotals = True

' Offset für die nächste Tabelle
Offset = Offset + AnzahlStockwerke + 4 ' Vier Zeilen Abstand
End If
Next i

' Erstelle die Zelle für die Gesamtsumme
ws.Cells(Offset + 4, 1).Value = "Gesamtsumme"

' Erstelle die Formel in der Zelle, um die Totalwerte aller Tabellen zusammenzuzählen
Dim Gesamtformel As String
Gesamtformel = "=Summe(" ' ---- !!!! Das ist die Zeile die den Fehler verursacht !!!!
For i = 1 To AnzahlHäuser
Gesamtformel = Gesamtformel & Tabellennamen(i) & "[[#Ergebnisse];[Total pro Stockwerk]]"
If i AnzahlHäuser Then
Gesamtformel = Gesamtformel & "+"
End If
Next i
Gesamtformel = Gesamtformel & ")"
ws.Cells(Offset + 4, 2).Formula = Gesamtformel

End Sub






9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
08.11.2023 18:55:52
Piet
Hallo

probier es bitte mal mit FormulaLocal, oder schreibe anstatt "=SUMME(" die englische Version "=SUM("

mfg Piet
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
09.11.2023 00:34:18
onur
Schreib doch mal hinter
Gesamtformel = Gesamtformel & ")"

das hier:
Debug.print Gesamtformel

Dann siehst du das Problem im Direktfenster.
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
09.11.2023 08:13:29
TomHoff
Guten Tag Onur

Ich habe deinen Tipp ausprobiert. Im Direktfenster sieht alles richtig aus, aber ich erhalte weiterhin die Fehlermeldung.
Aber wenn ich in der Zeile
Gesamtformel = "=Summe("

das Gleich-Zeichen vor Summe entferne, also
Gesamtformel = "Summe("

dann läuft der Code einwandfrei durch und in der Zelle wird alles richtig geschrieben. Zum Beispiel:
Summe(Haus_1[[#Ergebnisse];[Total pro Stockwerk]];Haus_2[[#Ergebnisse];[Total pro Stockwerk]])

Nun kann ich in der Zelle von Hand das Gleich-Zeichen einsetzen und die Formel funktioniert.

Aber das Ziel ist es, dass die Formel komplett direkt in die Zelle geschrieben wird.

Ich habe auch schon versucht, alles in eine Hilfszelle zu schreiben und danach mit einem Gleich-Zeichen zu kombinieren, leider auch erfolglos.

Anzeige
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
09.11.2023 08:40:49
onur
Poste doch mal die Formel im Debug-Fenster.
Wenn es wirklich mit dem manuellen "=" funktioniert, was ist, wenn du in die Zelle, wo der Code die Formel hineinschrieb, mit Enter abschliesst?
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
09.11.2023 09:14:21
TomHoff
Die Formel im Debug Fenster sieht so aus:

=Summe(Haus_1[[#Ergebnisse];[Total pro Stockwerk]];Haus_2[[#Ergebnisse];[Total pro Stockwerk]];Haus_3[[#Ergebnisse];[Total pro Stockwerk]])


Eigentlich richtig. Aber wenn das Gleich-Zeichen im Code steht, kommt die Fehlermeldung 400 und in die Zelle wird gar nichts geschrieben.
Also kann ich leider die Formel dann auch nicht mit Enter abschliessen.
Anzeige
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
09.11.2023 09:21:11
onur
Weil da Rormula statt FormulaLocal steht ?
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
09.11.2023 09:34:13
TomHoff
Ich glaub's nicht, das wars!!

Ich habe den Code schon so lange immer wieder angesehen und hab's einfach nicht gesehen.
Fast schon peinlich ;-)

Vielen Dank!
Gerne !
09.11.2023 09:37:03
onur
AW: .formula = "=SUM(" & "xxx" verursacht Fehler 400
08.11.2023 19:16:30
Tom Hoff
Hallo Piet

Danke für deine Lösungsvorschläge.

Ich hätte noch erwähnen sollen, dass ich dies schon versucht habe.

Egal ob ich
Gesamtformel = "=summe(" 

oder
Gesamtformel = "=SUM(" 

schreibe, es kommt zur Fehlermeldung.

Auch habe ich schon versucht
    Gesamtformel = "=" & "summe("

oder
    Gesamtformel = "=" & "SUM("


zu schreiben. Beide funktionieren nicht.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige