Zeile finden und überschreiben VBA

Betrifft: Zeile finden und überschreiben VBA
von: Anne
Geschrieben am: 10.09.2020 13:26:21
Hallo,
diese Anfrage schließt sich an das folgende Thema an:
https://www.herber.de/forum/archiv/1776to1780/1777714_Zeile_finden_und_ueberschreiben_VBA.html#1778025
Anbei die angepasste Datei. Wenn man die Userform (Schaltfläche dazu befindet sich auf Tabelle1) aufruft habe ich alles genau erklärt und auch mein Problem geschildert, welches ich habe:
https://www.herber.de/bbs/user/140170.xlsm
Grob gesagt, möchte ich mit Hilfe einer Userform eine Tabelle nach einem Wert durchsuchen. Diesen Wert in einer Combobox(1) ausgeben und die dazugehörigen Spalten in andere Comboboxen und Textboxen übernehmen. Einzelne Comboboxen sollen nur mit einem Dropdown, der vorgegeben ist, abgeändert werden können oder Textboxen die einfach überschrieben werden. Abschließend möchte ich die Änderungen, die in der Userform gemacht wurden, in den Comboboxen mit Dropdown oder im Textfeld mit der Überschreibung, mit einem Button in die Tabelle überschreiben.
In den Comboboxen dürfen für die Änderung nur die Werte aus dem Dropdown genommen werden und nicht einfach irgendwelche.
Ich hoffe, nun habe ich mein Problem ausführlich und zu eurer Zufriedenheit geschildert. Über eure Hilfe, wäre ich mehr als Dankbar!!
Vielen lieben Dank und liebe Grüße
Anne

Betrifft: AW: Zeile finden und überschreiben VBA
von: fcs
Geschrieben am: 10.09.2020 17:22:10
Hallo Anne,
nachfolgend der Code des Userforme etwas aufgeräumt.
Die Combobox4 hab ich mal außen vor gelassen, da du sie ja nur zum Testen hast.
Meine Frage noch: Was soll mit dem Wert in der Combobox5 passieren, wenn du auf Anpassen klickst?
Ich habe hier erst einmal eine Prüfung eingebaut, ob ein Wert gewählt wurde.
LG
Franz
Option Explicit
Dim bAnpassenClick As Boolean
Private Sub UserForm_initialize()
Dim werte As Object
Dim i, lngZeileMax, lngZeileMaxMA As Long
lngZeileMax = Tabelle1.UsedRange.Rows.Count
With Me.ComboBox1
.RowSource = "Tabelle1!A2:E" & lngZeileMax
.ColumnCount = 5
.Style = fmStyleDropDownList
.ListIndex = -1
.ListRows = 8
End With
lngZeileMaxMA = Tabelle2.UsedRange.Rows.Count
With Me.ComboBox2
.RowSource = "Tabelle2!A2:B" & lngZeileMaxMA
.ColumnCount = 2
.Style = fmStyleDropDownList
.ListRows = 5
End With
Set werte = CreateObject("Scripting.Dictionary")
With Worksheets("Tabelle3")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, 3) = "F" Then
werte(.Cells(i, 2).Text) = 0
End If
Next
End With
Me.ComboBox3.List = Application.Transpose(werte.Keys)
ComboBox5.Style = fmStyleDropDownList
Set werte = Nothing
End Sub
Private Sub ComboBox1_Change()
Dim i As Long
With ComboBox1
If .ListIndex = -1 Or .Text = "" Then
ComboBox2.Value = ""
ComboBox3.Value = ""
ComboBox5.Value = ""
TextBox1.Value = ""
Else
If bAnpassenClick = False Then
ComboBox2.Value = .List(.ListIndex, 1)
ComboBox3.Value = .List(.ListIndex, 2)
TextBox1.Value = .List(.ListIndex, 3)
End If
End If
End With
End Sub
Private Sub ComboBox3_Change()
Dim i As Long
With Worksheets("Tabelle3")
Me.ComboBox5.Clear
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If Me.ComboBox3 = .Cells(i, 2) And .Cells(i, 3) = "F" Then
Me.ComboBox5.AddItem .Cells(i, 1)
End If
Next i
End With
End Sub
Private Sub CommandButton1_Click()
Dim r As Long
If Me.ComboBox5.ListIndex = -1 Then
MsgBox "Es ist noch kein Wert in Combobox5 gewählt!", vbOKOnly, "Prüfung Dateneingabe"
Exit Sub
End If
bAnpassenClick = True
With Sheets("Tabelle1")
r = ComboBox1.ListIndex + 2
.Cells(r, 2).Value = ComboBox2
.Cells(r, 3).Value = ComboBox3
.Cells(r, 4).Value = TextBox1
End With
bAnpassenClick = False
End Sub
Beiträge aus dem Excel-Forum zum Thema "Zeile finden und überschreiben VBA"