Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

Formel per VBA erstellen

Formel per VBA erstellen
26.05.2023 18:29:16
Siegfried

Hallo zusammen,
ich möchte Formeln per VBA erstellen und habe dazu folgenden Code gebastelt:

Sub Berechnung_Balldifferenz()

Dim n1 As Integer, n2 As Integer
Dim ZielCol As Integer, DistanzCol As Integer

' berechnet die Balldifferenz im Allgemeinen
Range("Ziel.Anfangspunkt").Value = "Bälle Differenz Allgemein"
DistanzCol = Range("Quelle.Ausgangspunkt").Column - Range("Ziel.Anfangspunkt").Column
' DistanzCol = -51

For n1 = 1 To Range("Anzahl.Feld").Value / 2
For n2 = 0 To (Range("Anzahl.SpieleSatz").Value * 2) * (Range("Anzahl.Begegnungen").Value) - 1
If WorksheetFunction.IsEven(n2) = True Then
ZielCol = DistanzCol - 1
Range("Ziel.Anfangspunkt").Offset(n1, n2).FormulaR1C1 = "=RC[-51]-RC[-50]"
' ZielCol = -50
Else
ZielCol = DistanzCol + 1
Range("Ziel.Anfangspunkt").Offset(n1, n2).FormulaR1C1 = "=RC[-51]-RC[-52]"
' ZielCol = -52
End If
Next n2
Next n1
' richtet die Spaltenbreite ein
For n1 = 0 To (Range("Anzahl.SpieleSatz").Value * 2) * (Range("Anzahl.Begegnungen").Value) - 1
Columns(Range("Ziel.Anfangspunkt").Column + n1).ColumnWidth = 2.86
Next n1

End Sub

Das Ergebnis ist soweit in Ordnung.
Allerdings bin ich damit nicht flexibel. Sobald ich eine Spalte einfüge oder entferne, liefert die Formel falsche Ergebnisse.
Wie kann ich die Formel so aufbauen, dass sie flexibel ist?

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per VBA erstellen
26.05.2023 20:42:23
Pappawinni
keine Ahnung, was du da vor hast, wenn es darum geht die Werte von ZielCol oder DistanzCol da
Range("Ziel.Anfangspunkt").Offset(n1, n2).FormulaR1C1 = "=RC[-51]-RC[-50]"
rein zu basteln, dann bastle:
Range("Ziel.Anfangspunkt").Offset(n1, n2).FormulaR1C1 = "=RC[" & DistanzCol & "]-RC[" & ZielCol & "]"
oder wie du das brauchst


AW: Formel per VBA erstellen
26.05.2023 23:55:44
Siegfried
Hi Pappawinni,

Danke,
das reinbasteln habe ich so ähnlich probiert, wie in Deiner Version.
Der Schlüssel ist der Trick mit dem Verkettungsoperator.
Was ich damit will?
Wenn ich mit Formeln im Tabellenblatt agiere, werden diese beim Einfügen einer neuen Spalte angepasst, Das sollte auch geschehen, wenn ich das per VBA mache.

Gruß
Siegfried

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige