Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1388to1392
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

Auf eine Neues

Auf eine Neues
08.11.2014 12:42:02
Stefan
Hallo Forum,
ich bin wieder bei meinem Problem von gestern. Wie ich in dem Beitrag schon schrieb, ist die mir dort angebotene Hilfe viel zu groß.
Ich will Autofahren lernen und man setzt mich auf einen Formel 1 Wagen.
Deswegen nun neuer Versuch in kleinen Happen.
Ich möchte gerne Daten ändern.
Dazu habe ich eine UF vorbereitet. Auf der UF eine Listbox und Textfelder.
Ich schaffe es auch die Listbox zu befüllen, sagen wir mal mit dem Haupt-Index.
Ich bekomme es aber nicht hin die einzelnen dazugehörigen Daten in die TextBoxen zu übertragen, geschweigen den die geänderten Daten zu überschreiben.
Mag sich nicht jemand meines Problems annehmen?
Gruß
Stefan
https://www.herber.de/bbs/user/93626.xlsm

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auf eine Neues
08.11.2014 13:38:41
Crazy
Hallo Stefan
dann fangen wir mal mit nem FIAT500 an ;-)
Option Explicit
Dim Suchergebnis As Range
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub leeren()
Dim objControl As Control
For Each objControl In Controls
Select Case TypeName(objControl)
Case "TextBox"
objControl.Text = ""
Case "ComboBox"
objControl.ListIndex = -1
Case "CheckBox"
objControl.Value = False
Case "OptionButton"
objControl.Value = False
End Select
Next
End Sub
Private Sub CommandButton7_Click()
Dim i As Integer
With Sheets("Mitglieder")
For i = 1 To 6
.Cells(Suchergebnis.Row, i + 2) = Controls("Textbox" & i).Value
Next
End With
End Sub
Private Sub ListBox1_Click()
Dim i As Integer
With Sheets("Mitglieder").Columns(3)
Set Suchergebnis = .Find(ListBox1.Text, LookIn:=xlValues, lookat:=xlWhole)
If Not Suchergebnis Is Nothing Then
For i = 1 To 6
Controls("Textbox" & i).Value = Suchergebnis.Offset(0, i - 1).Value
Next
End If
End With
End Sub
Private Sub UserForm_Initialize()
Dim objDic As Object, rngC As Range
Set objDic = CreateObject("Scripting.dictionary")
With Sheets(2)
For Each rngC In .Range(.Cells(2, 3), .Cells(Rows.Count, 3).End(xlUp))
objDic(rngC.Value) = 0
Next
End With
ListBox1.List = objDic.keys
End Sub

deine anderen Codes die du in der Userform hast, habe ich jetzt mal weg gelassen,
weil hierfür wird es nicht gebraucht
MfG Tom

Anzeige
AW: Freu
08.11.2014 14:36:28
Stefan
Hallo Tom, nachdem ich wirklich den überflüssigen Code rausgeworfen habe haut es super hin.
Nun werde ich mal versuchen das zu verstehen und dann in meine Reale Datei einbauen.
Danke Dir.
Gruß
Stefan

AW: Freu
08.11.2014 14:43:42
Stefan
Noch mal ich,
Tom es wäre nett wenn Du diesen Beitrag auch wenn er erledigt ist, im Auge behalten kannst.
Ich versuche nun eine 2. Listbox in dieses Beispiel einzubauen.
Da mein Vertrauen in mich eher klein ist, denke ich, das ich noch Fragen haben werde.
Gruß
Stefan

AW: Freu
08.11.2014 18:11:51
Stefan
Hallo Tom,
wie wird bitte die Textbox1 nach klick der Listbox1 befüllt?
Gruß
Stefan
PS: Versuche gerade die Daten von Listbox2 aus zu laden weil versuchen möchte das Listbox 2 in Abhäigkeit von Listbox1 befüllt wird.
Zum Verständnis: Ich möchte die Daten wenn ich die Datei mal irgendwann so habe wie es sein soll,
beim schreiben je nach Kategorie auf 7 verschiedene Tabellenblätter geschrieben werden.
Das habe ich heute Nachmittag auch schon hinbekommen. Nun möchte ich beim änderen eben in Listbox1 die 7 Tabellenblatter zur Auswahl haben und dann in Listbox2 das was im Moment in Listbox1 passiert.

Anzeige
AW: Freu
08.11.2014 18:21:06
Crazy
Hallo Stefan
das kann man so machen
Private Sub ListBox1_Click()
TextBox1 = ListBox1.Text
End Sub

MfG Tom

AW: Freu
08.11.2014 18:35:39
Stefan
Hallo Tom, ich versuche gerade den Code Fiat 500 zu verstehen.
Da machst du das ja nicht mit
Private Sub ListBox1_Click()
TextBox1 = ListBox1.Text
End Sub
Das hat sicher was mit den Variablen zu tun, und das habe ich noch nicht ansatzweise verstanden.
Gerade jetzt komme ich mir vor wie... ich habe eine 2 Listbox eingebaut.
Ich wollte, damit man mir nicht alles vorkaut die Listbox 1 inhaltlich tauschen.
So das was im Fiat 500 Code im Moment in der Listbox 1 stattfindet in Listbox2 abläuft.
aus irgendeinem Grund bekomme ich es nur soweit hin, das wenn ich in die UF aufrufe zwar beide Listboxen befüllt werden, aber nur in Listbox1 bei Klick die TextBoxen befüllt werden.
Ich dachte das ist "leicht" LB1 gegen LB2 tauschen
Nun versuche ich zu verstehn warum es nicht leicht ist, deswegen meine frage wie du im Beispiel die TextBoxen befüllt hast.
Gruß
Stefan

Die Datei https://www.herber.de/bbs/user/93631.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Freu
08.11.2014 18:41:34
Crazy
Hallo Stefan
mit Listbox1 werden ja die TextBoxen 1 bis 7 gefüllt
und ich gehe jetzt mal davon aus, dass die Textbox8 (Name) aus Listbox2 gefüllt werden soll
Private Sub ListBox2_Click()
TextBox8 = ListBox2.Text
End Sub

MfG Tom

AW: Freu
08.11.2014 18:52:33
Stefan
Hallo Tom,
ja, weil da möchte ich ja reinschreiben aus welchem Tabellenblatt sich die Listbox1 die Daten holen soll.
Der besseren Übersicht zuliebe wollte ich nur die Numerische Ordnung beibehalten, so unter dem Motto
Listbox 2 wird nach Info aus Listbox1 befüllt.
Gruß
Stefan
PS: Wenn ich manchmal etwas verwirrt oder verstrahlt wirke, liegt das sicher daran das ich Alleinerziehende Papa von zwei Vierjährigen bin, Ich bitte das zu entschuldigen.

Anzeige
AW: Freu
08.11.2014 19:02:52
Crazy
Hallo Stefan
das würde ich nicht mit einer Listbox sondern mit einer Combobox machen
in die Combobox dann die Blattnamen einlesen
dann kannst du das füllen der Listbox für die Daten so machen
Private Sub ListBox1_Click()
Dim i As Integer
With Sheets("Combobox1.Text").Columns(3)
Set Suchergebnis = .Find(ListBox1.Text, LookIn:=xlValues, lookat:=xlWhole)
If Not Suchergebnis Is Nothing Then
For i = 1 To 7
Controls("Textbox" & i).Value = Suchergebnis.Offset(0, i - 1).Value
Next
End If
End With
End Sub

MfG Tom

AW: Freu
08.11.2014 19:11:15
Stefan
Hey Tom,
Combo-Box... noch nie wa smit gemacht, ich schau mir das mal an und melde mich ggf.
Gruß
Stefan

Anzeige
AW: Kleines Problem
08.11.2014 19:33:58
Stefan
Hallo Tom,
so sieht es super aus, das wäre auch mein Ziel gewesen... aber...
ICh bekomme einen Debug-Fehler beim Schreiben, sprich wenn ich einen Datensat ausrufe , in einer TextBox was änder und dann speichern will.
Gruß
Stefan

AW: Kleines Problem
08.11.2014 19:43:05
Crazy
Hallo Stefan
hatte ich übersehen
Private Sub leeren()
Dim objControl As Control
For Each objControl In Controls
Select Case TypeName(objControl)
Case "TextBox"
objControl.Text = ""
Case "ComboBox"
objControl.ListIndex = 0
Case "CheckBox"
objControl.Value = False
Case "OptionButton"
objControl.Value = False
End Select
Next
End Sub

hier muss geändert werden
nu muss ich erstma mit den Hündchen Gassi gehen ;-)
MfG Tom

Anzeige
AW: Klein Problem
08.11.2014 19:51:29
Stefan
Hallo Tom,
ich werde nun auch gleich Schluss machen und danke Dir noch einmal für deine Geduld und Mühe.
Morgen werde ich das erst einmal alles versuchen zu dokumentieren und dann in meine eigentlich Datei versuchen einzubauen.
Dir und Deinem Hund noch einen schönen Abend.
Gruß
Stefan

AW: Kleines Problem
12.11.2014 13:45:40
Stefan
Hallo Tom,
auch wenn dieser Weg nun recht ungewöhnlich ist versuche ich es so.
Bitte glaube mir das ich hier keine Auftragsprogrammierung möchte auch wenn Robert das wohl so sieht.
Upps, vielleicht sollte ich Dir erst einmal sagen um was es hier geht.
ICh habe nach mit Deinem Fiat 500 Model weitergearbeitet. Läuft soweit auch alles recht gut.
Habe weiter Listbox dazu gebaut, dich ich wie folgt angelegt habe:
ListBox2.ColumnCount = 3
ListBox2.RowSource = "Daten!B2:C12"
ListBox2.ColumnWidths = "30;0"
Um mir dort auch die Nachbarspalten anzeigen zu lassen benutze ich:
With ListBox2
.Clear
.ColumnCount = 3
.ColumnWidths = "120;80;25"
End With
Aber bei Listbox1 Fiat 500 Model weiß ich auch nach dem Tipp von Franz nicht wie ich das angehen soll.
Möchte einfach nur das die Nachbarzelle mit angezeigt wird.
Magst du noch einmal helfen und bitte auch kommentieren?
Gruß
Stefan

Anzeige
AW: Kleines Problem
12.11.2014 13:48:12
Stefan
Hallo Tom,
auch wenn dieser Weg nun recht ungewöhnlich ist versuche ich es so.
Bitte glaube mir das ich hier keine Auftragsprogrammierung möchte auch wenn Robert das wohl so sieht.
Upps, vielleicht sollte ich Dir erst einmal sagen um was es hier geht.
ICh habe nach mit Deinem Fiat 500 Model weitergearbeitet. Läuft soweit auch alles recht gut.
Habe weiter Listbox dazu gebaut, dich ich wie folgt angelegt habe:
ListBox2.ColumnCount = 3
ListBox2.RowSource = "Daten!B2:C12"
ListBox2.ColumnWidths = "30;0"
Um mir dort auch die Nachbarspalten anzeigen zu lassen benutze ich:
With ListBox2
.Clear
.ColumnCount = 3
.ColumnWidths = "120;80;25"
End With
Aber bei Listbox1 Fiat 500 Model weiß ich auch nach dem Tipp von Franz nicht wie ich das angehen soll.
Möchte einfach nur das die Nachbarzelle mit angezeigt wird.
Magst du noch einmal helfen und bitte auch kommentieren?
Gruß
Stefan
Achja der Tipp von Franz mit dem ich nicht klar komme
Listbox1:
Hier die Eigenschaft ColumnCount auf 2 ändern und ggf. auch ColumnsWidths anpassen.
Combobox1:
Makro wie folgt anpassen. Es wird zusätzlich zusätzlich die Zeilennummer zu den Werten in Spalte C im Dictionary-Objekt erfasst. So kann man dann die weiteren Informationen für die Listbox zusammenstellen.
Sinnvoll wäre es, die Spaltennummer auch in einer weiteren Spalte der Listbox zu erfassen. Dann könnte man im Listbox1-Change-Makro auf die Suchfunktion verzichten und über die Zeilennummer des gewählten Eintrags in der List der Listbox direkt auf die Daten in der Tabelle zugreifen.
Gruß
Franz

Anzeige
...ich hab ja doch Recht !.........owT
12.11.2014 19:15:21
robert

AW: Siehe oben owT
12.11.2014 22:09:33
Stefan
.

AW: Kleines Problem
12.11.2014 20:31:13
Crazy
Hallo Stefan
wo ist denn nu das Problem?
du hast doch schon das hier
    ListBox2.ColumnCount = 3
ListBox2.RowSource = "Daten!B2:C12"
ListBox2.ColumnWidths = "30;0"

damit wird dir allerdings nur die erste Spalte der Listbox angezeigt
und so werden dir 2 Spalten angezeigt
Private Sub UserForm_Initialize()
ListBox2.ColumnCount = 3
ListBox2.RowSource = "Daten!B2:C12"
ListBox2.ColumnWidths = "50;25"
End Sub

MfG Tom

AW: Kleines Problem
12.11.2014 21:49:29
Stefan
Hallo Tom,
ja ber in Deinem Bespiel haben wir die Listbox1 doch über eine Combobox befüllt.
Private Sub UserForm_Initialize()
Dim strBlatt As Variant
strBlatt = Sheets("Daten").Range("H2:H9")
With ComboBox1
.List = strBlatt
.ListIndex = 0
Da ist mein Verständnisproblem.
Lieben Gruß
Stefan
PS und bitte nicht sauer sein wenn ich Robert nun mal Voll-Löffel

Anzeige
AW: Kleines Problem
14.11.2014 15:51:53
Crazy
Hallo Stefan
versuch mal das hier
Private Sub ComboBox1_Change()
Dim objDic As Object, rngC As Range
Dim i As Long
Set objDic = CreateObject("Scripting.dictionary")
If ComboBox1.ListIndex = 0 Then Exit Sub
With Sheets(ComboBox1.Text)
For Each rngC In .Range(.Cells(2, 3), .Cells(Rows.Count, 3).End(xlUp))
objDic(rngC.Value) = 0
Next
End With
ListBox1.List = objDic.keys
With ListBox2
.Clear
.ColumnCount = 3
.ColumnWidths = "50;50;50"
End With
With Sheets(ComboBox1.Text)
For i = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row
ListBox2.AddItem .Cells(i, 3)
ListBox2.List(ListBox2.ListCount - 1, 1) = .Cells(i, 4)
ListBox2.List(ListBox2.ListCount - 1, 2) = .Cells(i, 5)
Next
End With
End Sub

MfG Tom

AW: Kleines Problem
14.11.2014 08:16:51
Stefan
Hallo Tom,
muss ich nun davon ausgehen das keine Hilfe mehr kommt?
Gruss
Stefan

Ja
14.11.2014 08:29:11
Ein

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige