VBA Formular mit Split
06.02.2022 18:19:57
Freddy
ich hatte diese Wioche schonmal eine Frage zu diesem Thema. Jetzt komme ich wieder nicht weiter.
Ich habe eine Testarbeitsmappe erstellt. Auf dem Blatt "Beispiel", sieht man wie es z.B. aussehen könnte, wenn man das Formular verwendet hat.
https://www.herber.de/bbs/user/150936.xlsm
Hier mal der Code, der Ausgeführt wird wenn ein Butten im Formular geklickt wird. Ich habe jeweils dazu geschrieben, was ich gerne hätte was passiert. Weiter komme ich mit meinem Wissen noch nicht.
Private Sub CommandButton_addalternitenow_Click()
Dim last As Long, ARowsV As String, ARows As String, NARow As String, i As Integer, Rows() As String 'Variabeln
Dim rngF As Range
'Zeile des Produkts finden
Set rngF = ActiveSheet.Columns(1).Find( _
what:=NewProduct.TextBox_caption.Value, LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlNext)
If Not rngF Is Nothing Then
last = rngF.Row
Else
Exit Sub
End If
'Variabeln Wert
NARow = NewProduct.ComboBox_AddalterniTe.Value 'Neue Alternative in ComboBox
ARowsV = NewProduct.TextBox_alternites.Value 'Zeilen in der Alternativen-Textbox mit Value
ARows = NewProduct.TextBox_alternites 'Zeilen in der Alternativen-Textbox ohne Value
With NewProduct.TextBox_alternites
If NewProduct.ComboBox_AddalterniTe.Value = True And NewProduct.TextBox_alternites.Value = True Then
Rows = Split(ARows, ",")
'Hier soll überprüft werden, ob der Wert von NARow schon in der Zeile ist, wenn dieser nicht vorhanden ist und nicht last ist, soll dieser mit "," ergänzt werden
'If Not IsError(Application.Match(ARows, Rows, 0)) Then
' MsgBox "Das Produkt in Zeile " & NARow & " ist bereits als Alternativprodukt für Zeile " & last & " vorhanden", vbOKOnly
'Else
' For i = 0 To UBound(Rows)
' If i NARow Then
' Next i
' Else
' End If
' .Value = .Value & "," & NARow
'End If
Else
If NARow = last Then
MsgBox "Es kann nicht das gleiche Produkt als Alternative ausgewählt werden.", vbOKOnly
Else
.Value = NARow
End If
End If
End With
Weiter:
'hinzufügen der Werte in die Tabelle:
ActiveSheet.Cells(last, 2).Value = NewProduct.TextBox_alternites.Value
If NewProduct.CheckBox_topalternite.Value = True Then
ActiveSheet.Cells(last, 3).Value = 1
'Hier soll der Wert in Spalte 3 für alle anderen Alternativen des Produkts auf 0 gesetzt werden. Wenn keine der Alternativen eine Hauptalternative ist, dann soll eine MSG-Box angezeigt werden (vbOkCancel), ob das ausgewählte Produkt die Hauptalternative sein soll
Else
ActiveSheet.Cells(last, 3).Value = 0
End If
'Für jede Zeile, die in ARows drin steht, soll der Wert aus ARows übernommen werden, nur die selbe Zeile nicht und dafür die Zeile "last"
End Sub
Ich freue mich über Bearbeitungen und Vorschläge, um meine Wünsche zu lösen.Vielen Dank!
Grüße Freddy