Hallo zusammen,
so langsam stoße ich an meine Grenzen bezüglich Excel und VBA.
Kurze Beschreibung:
Meine Userform2 beinhaltet eine TextBox1 und einen CommandButton1. Über VBA soll nun nach betätigen des Button1 geprüft werden, ob der Eintrag in der TextBox1 in der Tabelle „MAs“ existiert. Wenn ja, soll eine MsgBox mit einem Hinweis ausgegeben werden und wenn nicht, soll der Eintrag hinzugefügt und dazu ein Tabellenblatt mit dem Eintrag aus TextBox1 erstellt werden. Das konnte ich soweit mit folgendem Code lösen:
Private Sub CommandButton1_Click()
Sheets("MAs").Activate
'Schleife zur Prüfung, ob Eintrag bereits existiert
For i = 1 To 100
'Wenn Zellwert ungleich Eingabe, dann durchsuche die nächste Zeile
If Cells(i, 1).Value <> UserForm2.TextBox1.Value Then
Else
'Sofern Zellwert gleich Eingabe gebe eine Meldung aus, dass MA existiert und be-ende die Prozedur
MsgBox ("MA existiert bereits. Bitte in Tabelle MAs prüfen...")
Exit Sub
End If
Next
'Tabellenblatt für neuen MA generieren
Dim NextRow As String
Dim LR As Integer
Sheets("MAs").Activate
'Nächste leere Zeile bestimmen
NextRow = Application.WorksheetFunction. _
CountA(Range("A:A")) + 1
OptionUnknown = True
'Daten aus Eingabemaske übertragen
Cells(NextRow, 1) = UserForm2.TextBox1.Value
Cells(NextRow, 1).Select
letzte = Sheets("MAs").Range("A" & Rows.Count).End(xlUp).Row
'Füge den neu erfassten MA ans Ende der Liste ein und erstelle neues
'Tabellenblatt mit der Bezeichnung des neuen MA.
Dim wksBlattdaten As Worksheet
Dim lngZeile As Long
Dim auslesen As String
Set wksBlattdaten = ThisWorkbook.Sheets("MAs")
lngZeile = 100 'Anzahl der Zeilen die er durchsuchen soll.
While wksBlattdaten.Cells(lngZeile, 1) <> Cells(letzte, ActiveCell.Column).Value
Debug.Print lngZeile
lngZeile = lngZeile - 1
Wend
Set wksBlattdaten = Nothing
Sheets.Add
ActiveSheet.Name = Sheets("MAs").Cells(letzte, ActiveCell.Column).Value
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Exit Sub
End Sub
Hier benötige ich jetzt eure Hilfe:
InTabelle1 Zelle A1 befindet sich eine Zählenwenns Funktion welche automatisch um Einträge erweitert werden soll. Ich habe z.B. mit dem o.g. Code zwei MAs erstellt den MA_1 und MA_2. In den dazugehörigen Tabellen steht nun in der Zelle B3 der Wert 1 welchen ich in Tabelle1 Zelle A1auslesen und die Summe wiedergeben möchte. Ich habe zu testzwecken manuell folgende Formel eingefügt:
=ZÄHLENWENNS(MA_1!B3;1)+ZÄHLENWENNS(MA_2!B3;1)
Ich erhalte als Wert die Zahl 2 zurück. Was soweit korrekt ist.
Was ich nun möchte ist, dass wenn ein weiteres Tabellenblatt über o.g. Makro hinzugefügt wird die Formel erweitert wird. Sagen wir ich füge das Tabellenblatt MA_3 hinzu, dann soll die Formel in Tabelle1 Zelle A1 wie folgt aussehen:
=ZÄHLENWENNS(MA_1!B3;1)+ZÄHLENWENNS(MA_2!B3;1)+ZÄHLENWENNS(MA_3!B3;1)
An dieser Stelle bin ich echt überfragt und weiß auch nicht, ob das überhaupt mit VBA lösbar ist. Er müsste nach dem ersten MA_1 bereits ein „+“ und die Zählenwenns Funktion einfügen mit der Bezeichnung des neu hinzugefügten MAs (was ich ja manuell gemacht habe). Die neue Bezeichnung könnte er sich über die Text-Box holen, da diese noch geöffnet ist oder über den letzten Eintrag in Spalte A der Tabelle „MAs“. Ich habe die Funktion bewusst Fett markiert, um zu veranschaulichen, was über VBA hinzugefügt werden sollte. Das müsste dann jedes Mal passieren, wenn ein neuer MA hinzukommt.
Vielleicht hat ja jemand eine Idee von euch.
Die Beispieldatei findet ihr hier:
https://www.herber.de/bbs/user/168617.xlsm
VG
Niko