Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellenspalten in UF darstellen
#21
asoooo... so meinst du das. jetzt verstehe ich Smile
ich probiere...
Antworten Top
#22
Hallo Atilla,

kannst Du mir vielleicht nocheinmal unter die Arme greifen?
Ich versuche mich möglichst verständlich auszudrücken Smile

Wie ich heute anhand der Orginaldatei feststellen musste, ist die zweite Suchspalte (Spalte B also, diese wird dann per Doppelklick nach I3 geschrieben) so lang, dass es eine Qual ist dort eine Nummer zu finden.

Ich habe nun eine kleine Suchmaske gebaut, die sich aus unserer UF heraus aufrufen lässt. 
Mit dieser Suchmaske findet man recht einfach den entsprechenden Wert und per Klick kann man den dann nach I3 schreiben.
Bis hierhin funktioniert das ganz gut Smile


Nun dachte ich eigentlich, dass unsere UF erkennt, welche Werte in Spalte I beschrieben sind und wechselt dann automatisch zur nächsten Spalte.

Wahrscheinlich muss wohl dieses "automatische erkennen" welche Zeile beschrieben ist aber erstmal ausgelöst werden.
Wenn ich das so richtig verstanden habe - wie könnte ich dieses "erkennen" auslösen? Natürlich ohne einen Doppelklick in die Listbox1? Sonst wird der Wert nämlich (so wie es ja eigentlich richtig wäre) in Zelle I3 geschrieben... 

Also nochmal in kurzform:
Wie kann ich erreichen, dass wenn Zelle I3 von außerhalb der UF beschrieben wurde, unsere Listbox die nächste Liste anzeigt?

Liebe Grüße
Klaus
Antworten Top
#23
Hallo Klaus,

vielleicht habe ich es diesmal ja direkt verstanden. :19: 
Wenn ja, dann reichte der letzte Satz aus für die Problembeschreibung.



Und zur Lösung bitte das UserForm_Initialize() Ereignis mit unten stehendem Code ersetzen:


Code:
Private Sub UserForm_Initialize()
 Dim i As Long
 Dim EintragLetzteZeile As Long
 Dim ListeSpaltenLetzteZeile As Long, WerteLetzteZeile As Long, FreieZelleZeile As Long

 ListeSpaltenLetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row 'letzte belegte Zelle Spalte A
 WerteLetzteZeile = Cells(Rows.Count, WerteSpalte).End(xlUp).Row 'letzte belegte Zelle Spalte H
 EintragLetzteZeile = Cells(Rows.Count, EintragSpalte).End(xlUp).Row + 1 'erste freie Zelle in Spalte I
 FreieZelleZeile = Application.Max(2, Range(Cells(2, EintragSpalte), Cells(EintragLetzteZeile, EintragSpalte)).SpecialCells(xlCellTypeBlanks).Row)
'  Range(Cells(2, EintragSpalte), Cells(EintragLetzteZeile, EintragSpalte)).ClearContents
'  Range("I2:I" & Cells(Rows.Count, EintragSpalte).End(xlUp).Row + 1).ClearContents 'I2 bis letzte belegte Zelle inhalte löschen
 If FreieZelleZeile < WerteSpalte Then
   If WerteLetzteZeile < 2 Then                      'wenn Spalte H weniger als zwei Einträge
     MsgBox "Keine Auswahl eingetragen!"
     Exit Sub
   End If
 
   ListBox1.List = Range(Cells(2, FreieZelleZeile - 1), Cells(ListeSpaltenLetzteZeile, FreieZelleZeile - 1)).Value 'Listbox1 aus Spalte A füllen
   Frame1.Caption = Range("A1")    'Frame1 beschriften mit Überschrift aus Spalte A
   
   Me.Tag = FreieZelleZeile     'Userform Tag wird der wert 2 eingetragen, Dieser Wert wird bei Doppelklick in die Listbox abgefragt und ist dann die Schreibzeile
   Me.Controls("ListBox" & FreieZelleZeile).ListIndex = 0
 End If
 For i = 2 To WerteLetzteZeile   'Frames 2 bis soviele Einträge wie in Spalte H mit den Werten aus Spalte H beschriften
   Me.Controls("Frame" & i).Caption = Cells(i, WerteSpalte)
 Next i
 
 For i = 1 To WerteLetzteZeile - 1    'In die Tag Eigenschaft der Schaltfläöschen den Wert von i reinschreiben
   Me.Controls("CommandButton" & i).Tag = i
 Next i
End Sub
Gruß Atilla
Antworten Top
#24
Hallo Atilla,

das freut mich ja das ich diesmal nicht so umständliche Erklärungen gefunden habe Smile

Also im Grunde klappt das so wie gedacht. Aber doch nicht so ganz.

Steht schon etwas in den Zellen in Spalte I, dann springt die Listbox1 sofort auf den nächsten freien Platz.
Fängt die UF aber von vorn an mit Spalte A -> doppelklick -> übernehmen -> Spalte B anzeigen, klappt das nicht.
Die Spalte B wird jetzt angezeigt, die rechte dazugehörige Box wird markiert. Wenn ich jetzt (per Suchmaske) etwas in I3 schreibe, bleibt unsere Listbox so wie gehabt mit der Anzeige von Spalte B stehen.
Der Sprung zur nächsten Spalte (der jetzt erfolgen müsste da I3 ja beschrieben ist) erfolgt nicht. 


Liebe Grüße
Klaus
Antworten Top
#25
Hallo Klaus,

aah, dann brauche ich eine Maske und zwar Deine Suchmaske.
Gruß Atilla
Antworten Top
#26
ok... 
ich hab die jetzt aber ohne was an Daten zu stricken nur mal rein gepackt. 
Reicht das?
Sonst bau ich den Rest nochmal auf


Angehängte Dateien
.xlsm   bsp suchmaske.xlsm (Größe: 17,24 KB / Downloads: 5)
Antworten Top
#27
hallo Klaus,

das Zusammenspiel wird so nicht klar.

Aber versuchen wir es mal so.
Verstehe ich Dich richtig, Du hast die von mir codierte Userform aktiv.
Aus der rufst Du die Suche Userform auf.
Dabei bleibt die vorige Form im Hintergrund geöffnet.
Nach schließen der Suche kommt sie wieder in den Vordergrund.

Alles richtig soweit?
Sag Ja!

Denn dann versuchen wir folgendes:
In Userform Suche nach der Zeile Unload suche
ergänzt Du diese Zeilen:

Unload UserForm1
UserForm1.Show


Userform1 ist dabei die von mir codierte Form. Falls Du sie anders benannt hast, dann musst Du es anpassen.
Gruß Atilla
Antworten Top
#28
jaaaa das scheint zu klappen.
coole idee Smile

ich probiere mal noch bisschen rum

Dankeschön :D
Antworten Top
#29
Hallo Klaus,

na, war doch eine blöde Idee.
Das geht einfacher und ohne Rumzappelei.


Die gleiche Stelle wie eben beschrieben so:

Unload suche
UserForm1.listbox_füllen


Also kein Unload Userform1 und auch keine Show. :19:
Gruß Atilla
Antworten Top
#30
...hab das Phänomen grad nochmal mit der "orignal" UF probiert - hier ist das nicht der Fall.

Folgendes passiert jetzt:
Wenn ich die UF aufrufe, dann wird Spalte A in der Listbox 1 angezeigt.
Klickt man jetzt auf einen X-beliebigen Clear-Button und danach doppelklick in die Listbox1, dann wird der Wert nicht in das Feld geschrieben was als nächstes an der Reihe wäre, sondern in jenes, welches ich gerade mit dem Clear-Button gecleart habe...

Hab ich mir gedacht, ich blende einfach immer erst dann die Button ein, wenn das entsprechende Feld beschrieben wurde... 
hm... krieg ich aber nicht gebacken Sad

Können wir das irgendwie anders umgehen?

Nochetwas ist seltsam.
Manchmal reagiert kein anderer Button (Nicht mal Abbruch). Man muss erst in die Listbox1 klicken (einfacher Klick reicht) dann sind plötzlich wieder alle Button funktionsfähig.
Alternativ dazu - einfach lange warten...
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste