Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
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

Werte überschreiben

Werte überschreiben
06.07.2015 16:35:05
Max
Ich habe ein Neues Problem....
Bei meiner aktuellen Liste habe ich eine Such UserForm (Suche), in der man eine Projektnummer eingibt und dann in einer ListBox die Treffer erhält. Die Projekte sind unterteilt in 4 Ordnerarten (1-4) und werden unterscheiden.
Ich habe einen ComandButton (Bearbeiten) der einen Neue UserForm (Bearbeiten) öffnet:

Private Sub CommandButton1_Click()
Me.Hide
Bearbeiten.Show
Me.Show
End Sub

In Bearbeiten gibt es auch eine Listbox die, die gleiche ist wie in Suche, dort soll das Projekt das zuvor in Suche makiert wurde gleich zu beginn makiert sein. Und per Speichern sollen dann aus den TextBoxen die Werte in die Tabelle übernommen werden.
Das übernehmen der Makierung habe ich bisher nicht hin bekommen. Bei manueller Auswahl funktioniert das Speichern nicht wenn ich beim Ordnertyp 2 etwas verändere wird wenn es davor einen Ordnertyp 1 gibt das ganze dort verändert... :/
Meine Frage also wie muss ich den Code verändern oder was habe ich hier übersehen?
Und wie ist es möglich eine Makierung auf das Selbe Element zu übernehmen in eine Andere UserForm?
Danke im Vorraus
Private Sub ComboBox1_Change()
If ComboBox1.Text = "NEIN" Then
ComboBox1.BackColor = &H80000005
End If
If ComboBox1.Text = "JA" Then
ComboBox1.BackColor = &HFF&
End If
End Sub
Private Sub ComboBox2_Change()
If ComboBox2 = 1 Then
ComboBox2.BackColor = &H80000005
End If
If ComboBox2 = 2 Then
ComboBox2.BackColor = &HC000&
End If
If ComboBox2 = 3 Then
ComboBox2.BackColor = &HC0C000
End If
If ComboBox2 = 4 Then
ComboBox2.BackColor = &HC000C0
End If
End Sub
Private Sub ComboBox3_Change()
If ComboBox3.Text = "NEIN" Then
ComboBox3.BackColor = &H80000005
End If
If ComboBox3.Text = "JA" Then
ComboBox3.BackColor = &HFF&
End If
End Sub
Private Sub Speichern_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 4
Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))  ""
If ListBox1.Value = Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) Then
Tabelle2.Cells(lZeile, 1).NumberFormat = "@"
Tabelle2.Cells(lZeile, 1).Value = Trim(CStr(PrNr.Text))
Tabelle2.Cells(lZeile, 1).HorizontalAlignment = xlCenter
Tabelle2.Cells(lZeile, 3).Value = Büro.Text
Tabelle2.Cells(lZeile, 3).HorizontalAlignment = xlCenter
Tabelle2.Cells(lZeile, 4).Value = Keller.Text
Tabelle2.Cells(lZeile, 4).HorizontalAlignment = xlCenter
Tabelle2.Cells(lZeile, 5).Value = Archiv.Text
Tabelle2.Cells(lZeile, 5).HorizontalAlignment = xlCenter
If ComboBox1.Text = "JA" Then
Tabelle2.Cells(lZeile, 7).Value = 1
Tabelle2.Cells(lZeile, 7).HorizontalAlignment = xlCenter
Else
Tabelle2.Cells(lZeile, 7).Value = ""
End If
Tabelle2.Cells(lZeile, 2).Value = ComboBox2.Text
Tabelle2.Cells(lZeile, 2).HorizontalAlignment = xlCenter
If ComboBox3.Text = "JA" Then
Tabelle2.Cells(lZeile, 6).Value = 1
Tabelle2.Cells(lZeile, 6).HorizontalAlignment = xlCenter
Else
Tabelle2.Cells(lZeile, 6).Value = ""
End If
Tabelle2.Cells(lZeile, 8).Value = Nummer.Text
Tabelle2.Cells(lZeile, 8).HorizontalAlignment = xlCenter
If ListBox1.Text  Trim(CStr(PrNr.Text)) Then
ListBox1.Clear
lZeile = 4
Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))  ""
ListBox1.AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub
Private Sub UserForm_Initialize()
With Me.ComboBox2
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
End With
With Me.ComboBox1
.AddItem "JA"
.AddItem "NEIN"
End With
With Me.ComboBox3
.AddItem "JA"
.AddItem "NEIN"
End With
Dim lZeile As Long
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = "50Pt;25Pt;0Pt;0Pt"
.Clear
lZeile = 4
Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))  ""
.AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
.List(.ListCount - 1, 1) = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))
.List(.ListCount - 1, 2) = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
.List(.ListCount - 1, 3) = lZeile
lZeile = lZeile + 1
Loop
End With
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
Dim lZeile As Long, lngFarbe As Long
lngFarbe = &H80000005
Büro = ""
Keller = ""
Archiv = ""
Nummer = ""
ComboBox2 = ""
ComboBox3 = ""
ComboBox1 = ""
Me.ComboBox2.BackColor = lngFarbe
Me.ComboBox1.BackColor = lngFarbe
Me.ComboBox3.BackColor = lngFarbe
If ListBox1.ListIndex >= 0 Then
lZeile = ListBox1.List(ListBox1.ListIndex, 3)
PrNr = Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
Büro = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
Keller = Tabelle2.Cells(lZeile, 4).Value
Archiv = Tabelle2.Cells(lZeile, 5).Value
Nummer = Tabelle2.Cells(lZeile, 8).Value
ComboBox2 = Tabelle2.Cells(lZeile, 2).Value
If Tabelle2.Cells(lZeile, 6).Value = 1 Then
ComboBox3 = "JA"
ComboBox3.BackColor = &HFF&
End If
If Tabelle2.Cells(lZeile, 7).Value = 1 Then
ComboBox1 = "JA"
ComboBox1.BackColor = &HFF&
End If
If Tabelle2.Cells(lZeile, 6).Value = "" Then
ComboBox3 = "NEIN"
ComboBox3.BackColor = &H80000005
End If
If Tabelle2.Cells(lZeile, 7).Value = "" Then
ComboBox1 = "NEIN"
ComboBox1.BackColor = &H80000005
End If
If Tabelle2.Cells(lZeile, 2).Value = 2 Then
ComboBox2 = Tabelle2.Cells(lZeile, 2).Value
ComboBox2.BackColor = &HC000&
End If
If Tabelle2.Cells(lZeile, 2).Value = 3 Then
ComboBox2 = Tabelle2.Cells(lZeile, 2).Value
ComboBox2.BackColor = &HC0C000
End If
If Tabelle2.Cells(lZeile, 2).Value = 4 Then
ComboBox2 = Tabelle2.Cells(lZeile, 2).Value
ComboBox2.BackColor = &HC000C0
End If
End If
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte überschreiben
07.07.2015 05:47:29
fcs
Hallo Max,
wenn die beiden Listboxen in den Beiden Userformen die gleichen Einträge mit der gleichen Sortierung als Auswahlliste haben, dann könntest du folgendes probieren:
Bearbeiten.Listbox1.Listindex = Suche.Listbox1.Listindex
Diese Anweisung muss an einer Stelle im Code stehen nacdem die Auswahlliste für Bearbeiten.Listbox1 zugewiesen/erstellt wurde.
Alternativ kanst du in der Initialisieruns oder Activate-Prozedur von Bearbeiten die Auswahlliste der Listbox1 abarbeiten und dabei Ordner und Typ zeilenweise vergleichen und bei Übereinstimmung den Listindex = der Zeile setzen.
Eine andere clevere Idee, um die Einträge in der Auswahlliste eindeutig zu machen, wäre, dass in die Spalte der Listboxen die den Wert bestimmt beim Einlesen der Auswahlwerte Ordner und Typ eingelesen werden. So nach dem Schema:
Listbox1.AddItem Tabelle2.Cells(lzeile,1).Text & "-" & Tabelle2.Cells(lZeile, 2).Text
Dann kannst du auch den Wert der Listbox in der Userform "Bearbeiten" setzen.
Bearbeiten.Listbox1.Value = Suche.Listbox1.Value
Das übernehmen der Makierung habe ich bisher nicht hin bekommen. Bei manueller Auswahl funktioniert das Speichern nicht wenn ich beim Ordnertyp 2 etwas verändere wird wenn es davor einen Ordnertyp 1 gibt das ganze dort verändert... :/

Beim Durchsuchen der Tabelle muss du immer Ordner und Typ in den Zeilen vergleichen, um die richtige Zeile zu finden, in der Werte geändert werden sollen.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige