Anzeige
Archiv - Navigation
1952to1956
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

Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben

Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
24.11.2023 08:44:28
Proteus
Hallo zusammen,

nach Stundenlanger Suche und tausenden Tests bin ich jetzt an dem Punkt angekommen wo ich eure aktive Hilfe benötige.

Zuerst die Problembeschreibung
Es geht um eine Tabelle die von mehreren "Vereinen" genutzt werden soll. Daher sind die Buttonbeschriftungen so variabel gehalten.
Ein neuer Teil davon soll die Ausgabe von Bildern bestimmter Leute sein, da die Personalfluktuation es den neuen schwer macht zu wissen wer für was zuständig ist.
Aufgebaut ist das ganze als Userform mit Multipage.
Viele Sachen der Datei funktionieren aktuell im Wirkbetrieb sehr gut und werden positiv aufgenommen.

Eine Multipage soll nun eine bestimmte Anzahl von Funktionsgruppen ausgeben. Das ist aktuell fertig und Funktioniert auch schon. Wenn ich dort eine Funktion als CommandButton auswähle sollen aus der Tabelle die Zugehörigen Namen gesucht werden.
Die Darstellung ist auf der nächsten Multipage geplant. Dort soll ein Label mit einem Namen gefüllt werden. Aus dem Caption des Label wird später ein Dateipfad generiert und das entsprechende Bild über dem Label ausgegeben.

Nun zum eigentlichen Problem:
Ich bekomme den Code nicht hin die Tabelle "Namen" zu durchsuchen und die Ergebnisse auf mehrere Label zu verteilen.
Der CommandButton holt sich seine Beschriftung aus der gleichen Tabelle, somit ist der Suchparameter schon mal einfach abzugreifen.

In meiner Beispieldatei (aktuell ist nur der Button "Vorsitzende" bespielt) soll auf der nächsten Multipage die entsprechende Labels mit den Namen gefüllt werden.
Die Ausgabe soll in alphabetischer Reihenfolge erscheinen sofern in der gesuchten Spalte nur ein X steht. Steht dort eine 1 oder 2 geht es um den ersten oder zweiten Verantwortlichen. Dann soll die Reihenfolge nicht mehr alphabetisch sein, sondern entsprechend den Nummern 1 oder 2 oder 3.

Der Personalpool wird recht groß, daher brauche ich ca. 35 Namensfelder und Bildfelder (eventuell wenn mehr als 20 ausgegeben werden mit Bildlaufleiste). Wenn nur zwei Ergebnisse gefunden werden sollen die entsprechend größer skaliert werden. Alle nicht belegten Label und Bildfelder sollen dann ausgeblendet werden.

Hier dürfte nun meine Musterdatei liegen
https://www.herber.de/bbs/user/164552.xlsm
Damit ihr mich für meine Dummheit nicht umbringt sind wenigstens die Funktionen so benannt das ihr lächeln könnt.

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

Betreff
Datum
Anwender
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
25.11.2023 11:53:25
Oberschlumpf
Moin,

bevor ich versuche, zu helfen, frag ich lieber noch mal nach, weil deine Frage ja schon "etwas älter" ist:

1. Hast du deine Frage auch schon in anderen Foren gestellt?
Ja = dann zeig bitte die Links zu den anderen Foren (nicht nur Link von der Hauptseite, sondern bitte Link zu deinem Beitrag)

2. Wurde deine Frage schon beantwortet/gelöst?
Ja = dann antworte bitte auch

Ciao
Thorsten
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
26.11.2023 12:34:15
Proteus
Vielen Dank das du mir helfen möchtest.

Bisher habe ich nur in diesem Forum gefragt, und auch noch keine weiteren Lösungsansätze erhalten.

Lieben Gruß
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
26.11.2023 23:43:33
Oberschlumpf
Hi,

so, habe fertich...

Voraussetzung:
- im Verzeichnis, in dem du gleich meine Excel-Datei speicherst, muss ein Unterverzeichnis mit dem Namen "Bilder" enthalten sein
- in diesem Unterverzeichnis müssen alle Personen-Bilddateien im JPG-Format gespeichert sein
- die Namen der Bilddateien müssen so lauten: "Name Vorname.jpg", z Bps "Meier Franz.jpg"
(wenn alles in einem anderen Verzeichnis gespeichert; wenn andere Dateinamen, dann...musst du das im Code entsprechend anpassen)

Damit du es am Anfang etwas leichter hast, bekommst du gleich von mir eine ZIP-Datei zum Downloaden.

In der ZIP-Datei sind...
- meine Excel-Datei
- das Unterzeichnis BILDER
- und in BILDER einige jpg-Dateien mit den jeweils richtigen Dateienamen
...enthalten

Anpassungen durch mich an deinem Userform
- dein Userform(ular) ist für meinen 27"-Monitor zu groß
- deswegen musste ich das Userform in Höhe/Breite verkleinern
- genau so musste ich in Page2 sowohl Höhe/Breite und Abstände zueinander von allen CommandButton verkleinern
- die Größe/Breite/Position der Überschriften-Label und anderen Button, die immer da sein müssen, habe ich - nicht - verändert
- es kann also sein, dass du Höhe/Breite von Userform + Commandbutton und deren Abstände wieder vergrößern musst (wenn du das denn willst)

So, Erklärung:

Wichtig:
Zuerst den Inhalt aus ZIP-Datei in ein beliebiges Verzeichnis entpacken - NICHT die Excel-Datei direkt aus der ZIP-Datei starten!!

1. Wenn du es bis hierhin klaglos geschafft hast :-), dann starte mal die - entpackte! - Exceldatei

2. Du siehst deine dir fast bekannte Tabelle aus deiner Bsp-Datei.
- Der 1. Name in rot = weil du in der Zeile zwar mehrere "x" eingetragen hast, aber den Namen hattest du vergessen
- Wenn du schon möchtest, dass bei mehreren gefundenen Personen in der Multipage Scroll-Leisten gezeigt werden sollen, dann sei nicht so faul und trag auch mal - viele - Beispiel-Namen mit genügend "x" oder 1,2,3 ein...hab diesmal ich für dich gemacht

3. Klick auf den Button, damit das Userform(ular) angezeigt wird

4. Das Userform wird in der von mir zuvor erwähnten "kleineren Version" angezeigt

5. Klick auf den Button "Personalübersicht"

6. Wie du es kennst, werden nur die Button angezeigt, für die es in der Tabelle auch "Funktionsgruppen" gibt
Hier gibt es die erste, große "Besonderheit" im VBA-Code:
- es ...muss nicht... für jeden einzelnen Button extra Code geschrieben werden (der sich eigtl immer wieder wiederholen würde)
- es genügt ein einziger Codeblock...FÜR JEDEN ANGEZEIGTEN BUTTON
- möglich ist das durch Klassenprogrammierung - siehe das Klick-Ereignis clButton_Click im Klassenmodul namens "Klasse1_Buttons"
- egal, welchen Button du anklickst, es wird immer das Sub sbStart gestartet
...nur der Text des Buttons (Name der Funktionsgruppe) macht den Unterschied

7. Klick mal auf den Button "Vorsitzende"
- In der Multipage wird Seite 3 angezeigt
- Es werden für 2 Personen sowohl Bild- als auch Label-Feld angezeigt (mit Foto-Datei, wenn vorhanden)
- Eine Scroll-Leiste - wird nicht - angezeigt, weil ja nicht erforderlich

DAS ist zumindest DAS, was du siehst

Vor Anzeige der Bild-/Label-Felder in Multipage/Seite 3...
...wird in Tabelle erst mal die gewählte Funktionsgruppe gesucht
...aus gefundener Funktionsgruppe werden nun alle Namen + "x" oder 1,2,3-Einträge in einer Array-Variablen gesammelt, die in Spalte von Funktionsgruppe enthalten sind
...es wird in Excel-Datei ein weiteres Tabellenblatt hinzugefügt
...im neuen Blatt werden alle gefundenen Personen und ihre "x"- oder 1,2,3-Einträge eingetragen
...nun werden die Datenzeilen im neuen Blatt entweder alphabetisch ("x") oder numerisch (1,2,3) sortiert

Jetzt kommt die nächste "Besonderheit" im VBA-Code:
In Multipage/Seite 3 sind gar keine Bild-/Label-Felder für Foto-Dateien/deren Namen enthalten
Die notwendigen Bild-/Label-Felder werden erst im VBA-Code mit richtiger Größe (von dir vorgegeben) erzeugt, an die richtige Position verschoben und erhalten ebenso per VBA-Code die richtige Foto-Datei (wenn vorhanden) und eben den zugehörigen Namen im Label-Feld

...erst jetzt werden im Userform/Multipage/Seite3 die notwendigen Bild-/Label-Felder erzeugt
...diese erhalten anhand der Einträge im neuen Blatt ihre Foto-Dateien und Namen

8. Klick nun auf den "Zurück"-Button oberhalb der 2 Bild-Felder...du "landest" wieder in der Funktionsgruppen-Übersicht

9. Klick jetzt mal auf den Button "Schriftführer" oder "Aktive"
- für "Schriftführer"hab ich in deiner Tabelle 30 weitere Personen hinzugefügt; alle Personen haben ein "x" in der Spalte
- für "Aktive" gibt es nur 11 mal "x" in der Spalte
- bei beiden Funktionsgruppen werden in Multipage/Seite 3 mehr Bild-/Label-Felder angezeigt, als im Userform gleichzeitig darstellbar (zumindest auf meinem Monitor)
- und nur jetzt wird auch eine vertikale Scroll-Leiste angezeigt, mit der du auch hoch/runterscrollen kannst, um alle Personen sehen zu können

10. Das zuvor immer wieder neu hinzugefügte Tabellenblatt wird nach jedem Durchgang wieder gelöscht

Soooooo, gaaaanz viel erklärt..puhh!! :-)....hier nun meine ZIP-Datei:
https://www.herber.de/bbs/user/164589.zip

Beachte unbedingt die vielen Kommentare im VBA-Code!

Konnte ich helfen?

Ciao
Thorsten
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 16:16:26
Proteus
OH mein Gott.

Vielen vielen dank schon mal für deine Unterstützung.
Das hätte ich tatsächlich niemals selber hinbekommen.

Allerdings schmeißt er bei mir immer einen Fehler raus, sobald ich auf Page2 einen Knopf auswähle.
.Add2 Key:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Die neue Tabelle wird erzeugt, die Namen auch passend eingetragen. Aber er kann nicht sortieren.
Ich hab mir die Zeile nun auch 100 mal angesehen, aber ich verstehe es nicht. Auch die Erklärungen von Microsoft und Google zum Thema Add2 und Sort bringen mich nicht wirklich weiter. Die Zeile ist für mich zu komplex um den Fehler zu finden.


Ich muss mich natürlich entschuldigen dass ich die Namenszeilen nicht passend gefüllt habe. Das war keine Faulheit, ich habe lediglich nicht weit genug gedacht.


Wenn die Lösung mit dem Scrollen funktioniert, wird die fehlende Skalierung nicht so schlimm sein. Es ist eh schon der Hammer was du alles gemacht hast.
Klassenmodule sind mir bis heute noch nie untergekommen, scheinen aber mächtig viele Befehle zu sparen.
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 20:28:43
Oberschlumpf
Hi,

und bitte welcher Fehler genau (Nr + Meldung) erscheint beim Sortierversuch?

Ciao
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 20:38:41
Oberschlumpf
Hi,

versuch es mal mit dieser Änderung:

mach aus...


.Add2 Key:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

...mal das hier


.Add Key:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add Key:=Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

Falls du die Änderung noch nicht siehst, ich hab einfach hinter .Add die 2 gelöscht.
Zumindest bei mir funktioniert auch der geänderte Code ohne die 2 direkt hinter .Add

Andere, weitere Ideen hab ich noch nicht, da ich ja nicht mit deinem Computer testen kann.
Ich nutze Office 2016, du nutzt 2013 - vllt hilft ja diese kleine Korrektur schon.

Funktionierts nun auch bei dir? :-)

Ciao
Thorsten
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 20:51:16
Proteus
Ich hab die 2 aus beiden Zeilen entfernt und es funktioniert.

Aktuell bin ich bei der Arbeit und teste es da mit Office 2016, ich hoffe es funktioniert auf dem 2013er System auch.

Die Funktionen mit wenigen Teilnehmern funktionieren. Zum Test habe ich mal 15 Bilder eingefügt. Top Sache.


Bei der Übersicht "Schriftführer" die mehr Namen als Bilder hat kommt Laufzeitfehler '481' - ungültiges Bild.
Kann es sein das bei die Wiederholung der Bildersuchfunktion kann keine fehlenden Bilder mehr verarbeiten kann?


Als Test habe ich beim Rasenmäher mal 15 "X" gemacht. Das funktioniert super, auch mit Bildlaufleiste. Erschreckend nur das in meinen Testbilder ein Katzenbild ist....
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 20:57:34
Proteus
Jetzt war ich mit der Antwort zu schnell.
Es liegt nicht an den fehlenden Bildern. 18 Bilder gehen, nehme ich 19 kommt der o.g. Fehler. Dabei ist es auch egal was für ein Bild, oder welcher Name es ist.

Das entzieht sich jetzt komplett meiner Logik.
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 20:59:01
Oberschlumpf
ah, ok...na gut, nich ok^^ :-)
aber DAS werd ich auch mal testen - bis gleich! ;-)
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 21:04:12
Proteus
Es scheint mit den Nummern im Vornamen zu tun zu haben. Bei 10 spielt er noch mit, bei der Nummer 11 steigt er aus.
Ich habe die Nachnamen ab 10 umbenannt in AName10, BName11, CName12. Das brachte erstmal keine Änderung. Dann habe ich mit bei den VName die Nummer ab 10 entfernt und es geht.

Da ja normalerweise keine Nummern im Vornamen auftauchen (das bleibt hoffentlich noch viele Jahre so) wäre ich jetzt guter Dinge das mit realen Daten Füttern zu können.
Das wird allerdings ein paar Tage in Anspruch nehmen.

Ich hoffe ich darf mich noch mal melden wenn etwas nicht funktioniert.

Oberschlumpf, wenn wir uns mal begegnen muss ich dir unbedingt n Bier ausgeben.
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 21:48:50
Oberschlumpf
hehe...danke für die "Biersache" - ich hätt dann bitte gern ein Diesel im 0,5 L Glas :-))..und wenns geschmeckt hat, dann bitte noch eins...hihi

Ja, cool, freut mich, dass du den Grund gefunden hast.
Ich hab für "Name11 VName11" auch mal ein Bild mit selbem Dateinamen ins BILDER-Verzeichnis eingefügt.
Bei mir tritt der Fehler leider/zum Glück^^ nicht auf. So kann ich das hier leider nicht nachvollziehen...schade.

Na klar kannst du weiter fragen, wenn etwas nicht funktioniert.
Aber das wird wahrscheinlich nicht mehr in diesem Beitrag möglich sein - denn - in diesem Forum "verschwinden" alle Beiträge nach ca 6-7 Tagen im Forums-Archiv.
Da gilt dann: "nur gucken, nich anfass..ähh..antworten" :-)

Is aber nich schlimm. Erstell einfach n neuen Beitrag. Am besten, du zeigst im neuen Beitrag dann den Archiv-Link zu diesem Beitrag hier.
Da jedes Forum ja aus Schwarmwissen vieler besteht, könnten dann auch viele antworten. Und für die könnte es mit Verstehen einfacher sein, wenn denen die "Vorgeschichte" zu deinem neuen/weiteren Problem bekannt ist.

Jetzt noch n paar Antworten zu deiner 1. Antwort nach meiner Lösung (hätt ich schon längst schreiben können, aber mich "wurmt" es immer, wenn es noch Fehler gibt!)

1. Ja, ich hab gern geholfen, denn es hat echt Spaß gemacht...vor allem wegen 2. ^^ :-)

2. Denn auch ich hab wieder was dazu gelernt.
JA! Klassenprogrammierung ist echt ein geniales Werkzeug, das dir seehr viel Tipp-, bzw Programmierarbeit sparen kann! - Du (und ich..hehe) musst es nur verstehen!

Und ich hatte mit Klassenprogrammierung auch noch nicht soo viel zu tun, vielleicht 1 oder 2x.
Das hatte damals auch funktioniert, aber ich tat mich trotz Erfolg weiter schwer mit dem Verstehen, was ich da hinbekommen hatte.

Und als ich dann deine Bsp-Datei - mit den soooo vielen CommandButton auf Seite 2 im Multipage sah, wusste ich sofort: "Yeah, hier hilft wieder Klassenprogrammierung!"
So hab ich mich dann daran versucht.

Und diesmal hab ich es auch wirklich kapiert...yeah :-)
Also sag auch ich Danke...für dein Problem^^ :-)

3. Und auch die Erzeugung von Controls direkt im/mit VBA-Code kann sehr viel Arbeit sparen.
In deinem Fall die Image- und Label-Controls.

Sparen = Ich habe nicht per Hand 30 oder 40x im Userform Images + Labels platziert, was ja auch erst mal Zeit gekostet hätte - erinner dich daran, dass auch du etwas länger brauchtest mit dem Platzieren all der CommandButton.
Ich hab lediglich nur eine For/Next-Schleife benötigt, die nach und nach ein Image/ein Label erzeugt, in Höhe, Breite + Position richtig platziert hat = fertich
Ok, ok, ok...auch DAS hat n bisschen mehr Zeit gekostet, bis ich endlich raushatte, was genau muss ich wie und wo genau platzieren, damit Abstände zueinander und die Größen immer gepasst haben....aber DAS hat mehr Spaß gemacht, als alles per Hand zu machen :-)

Ach so, man könnte sogar all deine CommandButton genau so erzeugen + positionieren.
So hättest du...zumindest vor jedem Start...ein - fast leeres - Userform...hehe

Excel-VBA ist eh ein so tolles "Spielzeug"!!! Auch ich bin immer wieder beeindruckt, was man damit alles erreichen kann!

So, habe mal wieder...fertich :-)

Ciao
Thorsten
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 20:57:51
Oberschlumpf
Hi,

cool! Zumindest ein bisschen kommen wir der Sache ja schon näher! :-)

Aber...
"...Bei der Übersicht "Schriftführer" die mehr Namen als Bilder hat kommt Laufzeitfehler '481' - ungültiges Bild.
Kann es sein das bei die Wiederholung der Bildersuchfunktion kann keine fehlenden Bilder mehr verarbeiten kann?..."

a) kannst du mir bitte mal den kursiven Teil erklären? Sorry, die Satzstellung versteh ich nich ganz.

b) aber das, was ich verstehe = "...ungültiges Bild"
Kannst du bitte mal alle Bilddateien im Ordner BILDER prüfen?
Es müssen JPG-Dateien sein.
Und wenn es alles JPG-Dateien sind, kannst du bitte mal jedes Bild öffnen?
Vielleicht ist ja eine JPG-Datei dabei, die an sich fehlerhaft, also kaputt ist...und sich gar nicht mehr öffnen lässt.

wenn ich mit b) richtig liege, musst du a) nicht mehr erklären.

Ciao
Thorsten
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 22:11:29
Proteus
Mein wilder Gedankengang zu dem Kursiven Text.

ich hab mal irgendwo im Forum gelesen das beim Durchsuchen eine Art Schleife erzeugt wird, die solange Arbeitet bis eine Leere Zeile gefunden wurde.
Daher bin ich davon ausgegangen das der Code immer wiederholt wird, bis er einen Punkt erreicht wo es keinen Namen gibt und damit kein Bild gesucht werden muss.
In meiner einfachen Denkweise war jetzt der Ablauf quasi 1. guck ob die Datei da ist, sonst leeres Bild, 2. Öffne erste Bilddatei 3. Wiederholte Nr.2

Das war aber wahrscheinlich zu einfach gedacht.

Zu dem Bildfehler:
Ich hatte im Vorfeld alle Bilder getestet. in meinem ersten Bilderstapel waren jpg und jpeg. Den Fehler hab ich dann aber auch bemerkt.

Und es scheint nicht alleine an dem Namen11 zu liegen. erst in Verbindung mit Name1 bis Name10 und den weiteren zweistelligen Zahlen kommt der Fehler.
Ich habe dann die Namen geändert und natürlich auch die Bilder 1:1 verändert. Danach geht es, also kein Fehler in den jpg.
Aktuell habe ich die Namen 1-10 und 13 - 30 drin. Die Namen 11und 12 haben jetzt einen Vornamen ohne Zahl. Bei meinem Schriftführer werden jetzt 38 Namen ausgegeben, also deine 30 und die (nur) 8 die ich vorab drin hatte. Das funktioniert.

Wenn ich jetzt aber bei Name 11 und / oder Name 12 beim Vornamen die Zahl mit rein nehme kommt die Fehlermeldung.



Beim Testen ist mir jetzt aufgefallen das die Namen aus der Suche in ein neues Tabellenblatt geschrieben werden. Das hast du auch in den Kommentaren so geschrieben.
Es wird jedes mal eine neue nr. für das Blatt genutzt. Aktuell bin ich bei Tabelle50. Die anderen sind wie geplant immer gelöscht worden.
Gibt es eine Begrenzung bei der Nummerierung? irgendwann wird es ja Tabelle10000000 geben.
Anzeige
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 23:54:14
Oberschlumpf
Hi,

...die solange Arbeitet bis eine Leere Zeile gefunden wurde....Code immer wiederholt...bis...wo es keinen Namen gibt
Mein Code geht anders an die Sache ran:
1. Alle gesammelten Namen werden in neues Blatt eingefügt (z Bsp 20 Personen)
2. Person1 wird geprüft, Name z Bsp "Meier Franz"
- jetzt wird geprüft, ob in BILDER eine Datei mit Namen "Meier Franz.jpg" vorhanden ist
...ja = dem Image-Control (Bildfeld) für Meier Franz wird die Bilddatei "Meier Franz.jpg" zugewiesen
...nein = Datei mit richtigem Namen nicht vorhanden, also wird dem Image-Control auch nix zugewiesen
3. Punkt 2. wird so lange wiederholt, wie es Personen gibt, hier insgesamt 20x

"...Öffne erste Bilddatei...
In meinem Code wird nicht einmal eine Bilddatei geöffnet - oder meinst du mit "öffnen" = "zuweisen" ?...wie gesagt, letzteres passiert nur - wenn Bilddatei auch vorhanden ist

"Zu dem Bildfehler:"
Ich hab nun auch mal für alle Personen von "Name1 VName1" bis "Name12 VName12" eine Bilddatei im JPG-Format ins BILDER-Verzeichnis eingefügt - Makro gestartet = alle Bilder werden klaglos zugewiesen = leider weiß ich noch nicht, wieso DAS nicht auch bei dir funktioniert :-/

"...Es wird jedes mal eine neue nr. für das Blatt genutzt. Aktuell bin ich bei Tabelle50. Die anderen sind wie geplant immer gelöscht worden..."
Ja, stimmt schon. Für jedes neue Blatt wird die Blattnummer immer um 1 erhöht.

"...irgendwann wird es ja Tabelle10000000 geben..."
= DU MÜSSTEST 10 MILLIONEN mal den Code gestartet haben, UM DAHIN zu kommen!!!^^ :-)))))
Sag bescheid, wenn du denn...irgdwannnn mal...bei 1 MILLION angekommen bist :-)

Aber ok...
a) ja, es gibt eine Begrenzung, die ist aber nicht von einer fortlaufenden Zahl, sondern von der Anzahl an Zeichen im Blattnamen abhängig
Bedeutet: Hier bei dir wäre es bis Blattname "Tabelle100000000000000000000000" möglich = 100.000.000.000.000.000.000.000 = keine Ahnung, wie diese Zahl in Worten heißt :-))
"Tabelle100000000000000000000000" enthält 31 Zeichen; ein Blattname darf also nicht mehr als 31 Zeichen enthalten, egal ob Zahlen oder Buchstaben

Aber auch dieses Problem können wir beseitigen:

Änder diesen Code...


Sheets.Add after:=Sheets(Sheets.Count)

...um in...


Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "tmpBlatt"


Es wird weiterhin immer wieder ein neues Blatt hinzugefügt.
Dieses Blatt erhält aber nun nach deiner Code-Änderung immer den selben Namen "tmpBlatt"...also nix mehr mit fortlaufender Nummer.
Und "tmpBlatt" wird genau so auch immer wieder gelöscht.

Ach so, hast du wahrsch. schon selbst festgestellt:
Wenn du den Code immer mal wieder unterbrechen musst, oder wegen eines Fehlers wird unterbrochen, dann solltest du vor erneutem Start des Codes alle vllt erstellten neuen Blätter per Hand löschen.

So, bis gleich vielleicht :-)

Ciao
Thorsten...und wie heißt eigtl du?
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
28.11.2023 17:08:12
Proteus
Dann bin ich ja beruhigt, ich wusste nicht wie viele Tabellen Excel offen haben kann. Wenn nun bei 1000 Schluß wäre ist das ja irgendwie doof.

ich hab das alles nun mal in meine reale Umgebung eingebaut. Hat nur fünf Stunden gedauert bis es lief. Drei kleine Fehler sind mir dabei mächtig auf die Füße gefallen.
1. Ich habe bei mir 4 Seiten in der Multipage, Seite 2 ist schon anders belegt. -> gelöst
2. meine UserForm heißt tatsächlich anders -> gelöst
3. Ich habe ganz am Anfang in Seite 4 der Multipage einen Rahmen eingezogen. Stundenlang hab ich alles mögliche im Code ausprobiert bevor ich gemerkt habe das die Bilder hinter dem Rahmen liegen -> Schande über mein Haupt / gelöst.

Auf meinem privaten Rechner läuft es nun schon mit den Fotos. Die muss ich irgendwann mal etwas kleiner abspeichern sonst dauert der Aufruf zu lange.
Bevor ich nun auf den eigentlichen PC skaliere habe ich noch einen kleinen Wunsch:

Bei den Zeilen in denen die Bilder gesucht werden ist es doch sicherlich möglich einen Dateipfad aus der Tabelle zu nehmen.
Im Tabellenblatt "NAMEN" hat ich in Zelle B2 nun Platz geschaffen um den Speicherpfad der Bilder dort einzutragen.
Ziel soll es sein die Datei auch auf anderen System lauffähig zu machen. Bei dem eigentlichen PC liegen die Bilder in einem verknüpften Netzwerkordner. Somit würde ich bei B2 gerne X:\Bilder\Menschen\Mitglieder als Pfad angeben.

Versucht habe ich es bereits in dem ich aus:
If Dir(ThisWorkbook.Path & "\Bilder\" & Range("A" & lloRow).Value & ".jpg", vbNormal) > "" Then

diesen und ähnliche Basteleien gemacht habe:
If Dir(ThisWorkbook.Worksheets("Namen").Range("B2") & Range("A" & lloRow).Value & ".jpg", vbNormal) > "" Then


leider erfolglos.


Schönen Abend noch
Jörg

PS: Wenn es denn unbedingt gemischtes Bier sein muss..... dann sind auch n paar mehr drin :-)
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
28.11.2023 17:54:34
Proteus
Nun hab ich allerdings das nächste Problem

Sofern ich das richtig verstanden habe ist dies hier
'Option Explicit


'Dim clButton() As New Klasse1_Buttons

Für das Klassenmodul zuständig.

Wenn ich es aktiviere funktioniert das Klassenmodul mit allen Knöpfen auch ganz schick, aber leider steigen dann meine Speicherknöpfe für die Datumseingabe aus.
Auf Seite 2 habe ich vier einfache Textfelder die ein Datum aufnehmen sollen. Daneben ist jeweils ein Speicherknopf der den Wert dann auf plausibilität prüft und in die Tabelle schreibt. Der Name der oben in Seite 2 angezeigt wird findet sich in Spalte 2 der Tabelle "Daten" wieder.

Von diesen Knöpfen gibt es also vier stück, und alle melden Fehler beim Kompilieren (Variable nicht definiert). Markiert wird mir die Zeile Cancel=True

    Private Sub SpeicherEinsatz_Click()

'Datum überprüfen
If IsDate(neuEinsatz) = False Then
MsgBox "Das ist kein valables Datum"
Exit Sub
ElseIf (neuEinsatz) > CDate(Now) Then
MsgBox "Eintrag darf nicht in der Zukunft liegen"
Exit Sub
Cancel = True
End If
'Daten in Tabelle schreiben
Set finden = Columns(2).Find(what:=Userform.Namensfeld)
finden.Offset(0, 4) = CDate(neuEinsatz)
Me.neuEinsatz.Text = ""
'Seite wechseln
MultiPage1.Value = 0
Call ButtonFarbe
Call Backup_erstellen
End Sub



Ich hab auch schon überlegt ob das neu hinzugekommene Tabellenblatt nun eine eindeutigere Schreibweise verlangt und hab des hab deshalb die Zeile erweitert.
Set finden = Worksheets("Daten").Columns(2).Find(what:=Userform.Namensfeld)



Wo ist denn nun mein Denkfehler?


Vielen Dank
Jörg
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
28.11.2023 20:21:30
Oberschlumpf
Hi Jörg,

"...Hat nur fünf Stunden gedauert bis es lief..." = tja, selbst schuld! :-PPP...den konnt ich mir nicht verkneifen, und ich schreib auch nicht sorry!

Weil...
a) "...Ich habe bei mir 4 Seiten in der Multipage..."
Wieso zeigst du dann eine Bsp-Datei mit nur 3 Multipage-Seiten und nicht mit 4????

b) "...Auf Seite 2 habe ich vier einfache Textfelder..."
Hier selbe Frage wie bei a), nur eben auf die fehlenden Textboxen in der Bsp-Datei bezogen

c) "...Von diesen Knöpfen gibt es also vier stück..."
Auch diese 4 Knö..ich vermute, du meinst CommandButton, oder?...fehlen in der Bsp-Datei

So, für die nächsten Probleme gilt das :-PPP nicht.

1) "...ganz am Anfang in Seite 4 der Multipage einen Rahmen eingezogen..."
Ärger dich nich! Das passiert...und...wird irgdwann wieder passieren :-)
Du würdest nich glauben, wie oft mir soooo was schon passiert ist^^ :-) Kommt halt immer wieder mal vor...

2) "...ist es doch sicherlich möglich einen Dateipfad aus der Tabelle zu nehmen..."
Ja, das ist durchaus möglich. Und eigentlich sieht dein geänderter Code dazu grundsätzlich auch gut aus.
Einzige Rate-Idee, die ich hab (ich kann ja nur raten, weil ich nix mehr sehe), ist:

Wenn, wie du schreibst, in Zelle B2 wirklich nur...
X:\Bilder\Menschen\Mitglieder
...steht, dann änder den Eintrag in B2 mal um in...
X:\Bilder\Menschen\Mitglieder\

...denn dein Codeteil .Range("B2") & Range("A" & lloRow).Value macht aus X:\Bilder\Menschen\Mitglieder UND Z BSP Meier Franz = X:\Bilder\Menschen\MitgliederMeier Franz, aber es MUSS ja X:\Bilder\Menschen\Mitglieder\Meier Franz rauskommen

3) ...Fehler beim Kompilieren (Variable nicht definiert). Markiert wird mir die Zeile Cancel=True...
DAS hat nix mit Dim clButton... zu tun.
Dieser Kompilierfehler liegt an der anderen Codezeile = Option Explicit

Grund:
die Angabe Option Explicit sorgt dafür, DASS JEDE verwendete Variable vor ihrem ersten Einsatz mit Dim ... As deklariert (dem Code bekannt gemacht) werden muss.
In deinem gezeigten Code gibt es kein

Dim Cancel As...

Ja, ich weiß, du könntest die Option Ex... Zeile jetzt einfach weglassen - würd ich aber null, rein gar nicht empfehlen!

Wir Menschen - alle!^^ - neigen zu TIPPfehlern!
Wenn du also Option Ex... weglässt, und nur 1x nicht Cancel, sondern Kancel schreibst, dann kann es wieder Stunden dauern, bis du genau diesen einen Tippfehler gefunden hast.
So macht es durchaus Sinn, in - jedem Makro! (beginnt mit ...Sub, endet mit End Sub) - JEDE Variable vor ihrem Einsatz zu deklarieren.

3a) Und ich versteh auch nicht, wieso du Cancel = True verwendest

Dein gezeigter Code...
...

Exit Sub '-- beendet das Makro...
Cancel = True '-- ...und diese Zeile WIRD NIE ausgeführt = du brauchst diese Zeile also eh nich ;-)
...


4) "...Ich hab auch schon überlegt ob das neu hinzugekommene Tabellenblatt nun eine eindeutigere Schreibweise verlangt..."
Versteh ich nich...
Du schreibst doch, wenn du die beiden Codezeilen aktivierst, die zwar deine 4 Button "lahmlegen", dass dann aber mein Code tadellos funktioniert.
Da kann ich dir gerade nich folgen, wieso du nun Set finden = ... einbauen willst.

5) Und bitte wo kommt jetzt noch Worksheets("Daten") her???
Das fehlt auch in der mir bekannten Bsp-Datei :-/



So, wenn meine Raterei nicht all deine bis-hier-Probleme erfolgreich beantwortet hat, dann....
...zeig per Upload eine Bsp-Datei, die auch wirklich alles enthält, was im Original enthalten ist!! (natürlich nur, was den Aufbau/das Design betrifft; weiterhin keine Echt-Daten)

Ciao
Thorsten

P.S. Bier ohne alles ist mir meist zu herb = mit Cola gemischt ist's etwas süßer + leckerer ;-)
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
28.11.2023 22:37:32
Proteus
Ich geb mich ja geschlagen,
in meiner Unkenntniss habe ich nicht mit so vielen Zusammenhängen gerechnet. Mein Plan war eigentlich nur nett gemeint eine abgespeckte Datei zur Erklärung zu haben. Aber ja, ich weiß, Nett ist der kleine Bruder von scheiße.
Hat nicht so geklappt wie ich mir das gedacht habe.


Deshalb jetzt hier die ganze Datei.
https://www.herber.de/bbs/user/164640.xlsm
Sieht sicherlich nicht sonderlich gut aus der Code, aber er hat funktioniert. Ist halt immer wieder mal etwas gewachsen und geändert worden.

Den Dateipfad hab ich schon ausprobiert. Funktioniert natürlich. Wie immer ist es ein einzelnes Zeichen (In diesem Fall das \) welches den Ärger macht.
Damit anderen die die Datei verwenden nicht auch noch passiert kann ich den Backslash sicherlich noch in die Codezeile einfügen (schätze &\&).

Option Explicit
Da bin ich raus, was das bedeutet und macht hab ich nicht den geringsten Schimmer.
Das Makro für die einzelnen Knöpfe aus Seite 2 kommt irgendwo aus dem großen INet.
Wenn ich das so lese das dass Makro bei End Sub zu ende ist verstehe ich auch nicht warum das Cancel = True da steht. Ich bin immer davon ausgegangen das das End Sub zu dem darüberstehenden IF gehört und nur ausgeführt wird wenn die Fehlermeldung zum Datum gekommen ist weil die darunterliegenden Zeilen auch ausgeführt werden.


Zu Nr. 4:
Das Set wollte ich nicht einbauen, sondern nur erweitern. in der kurzen Version stammt es aus dem Makro für den Button SpeicherEinsatz. Ich habe es nur mit der zusätzlichen Bezeichnung des Worksheets versucht.



Sorry das ich in meiner Leichtgläubigkeit versucht habe die Datei abzuspecken um es übersichtlicher zu machen.


Gruß
Jörg


PS: beim Singlemalt kommt aber keine Cola dabei oder?
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
29.11.2023 01:31:32
Oberschlumpf
Hi Jörg,

und JETZT schreib ich doch SORRY!

Du hast ja recht!
Du wolltest es allen Antwort-Interessierten so einfach wie möglich machen und hast es natürlich auf keinen Fall böse gemeint.

Ich hab in meiner letzten Antwort auch NIX böse gemeint! :-)
Aber ich war leider etwas zu frustriert, weil eben "so etwas" (gezeigte Bsp-Dateien sehen anders aus als im Original) immer wieder passiert.
Und ich hab dann den Fehler gemacht: Ich hab meinen Frust, ausgelöst durch auch viele andere Fragende, nur an dich ausgelassen = TUT MIR ECHT LEID!

Nun ja, bis zu meiner nächsten Antwort - mit Update-Datei von mir - wird etwas dauern....ich muss nämlich Einiges anpassen ;-)

Wenn ich also länger brauch, und dieser Beitrag schon ins Archiv verschoben wurde, so bitte ich dich, spätestens dann einen neuen Beitrag zu erstellen, in dem ich dann antworten kann.

Natürlich besteht die Gefahr: Ich seh deinen neuen Beitrag nicht - aber ich geb mir Mühe, und halte meine "Forums-Augen" offen :-)

Ciao
Thorsten
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
29.11.2023 18:34:35
Oberschlumpf
Huhu Jörg,

da bin ich wieder! :-)

Und ich bin schon ein bisschen stolz auf mich :-) Ja, ich weiß, "Eigenlob stinkt"..hehe...is mir aber gerade egal :-)
Und jetzt will ich auch erst mal nicht sooo viel schreiben, sondern erst mal zeigen.

Hier, guck mal an...
https://www.herber.de/bbs/user/164657.xlsm

ES KANN SEIN, dass dir so Einiges an meinen Änderungen - nicht mehr - gefällt.
Ich hab sehr viel von deinem alten Code "zusammengequetscht", so dass alles auch mit viel weniger Codezeilen funktioniert, als eben mit deinen teilweise sehr vielen alten Codezeilen.

vielleicht-Problem (wieso es dir nicht gefallen könnte):
Ich habe sehr viel deines alten Command-Button-Klick-Codes in die Klassenprogrammierung verlagert.
Und da ich ja weiß, dass Klassenprogrammierung für dich noch total neu ist, kann es halt sein, dass du dich vielleicht zu überfordert fühlst, und du lieber wieder deinen alten Code nutzen würdest.

Wenn dem so ist, KEIN PROBLEM!, lass mich wissen, was genau ich rückgängig machen soll...ich würds dann auch tun.

Damit du im Code meine vielen neuen Kommentare schneller findest, beginnen all meine neuen Kommentare mit '***************
Drück im VBE also einfach auf STRG-F zum Suchen und gib als Suchtext **** ein - das reicht schon.

So, bitte bitte versuch schnell genug zu antworten, ob oder ob nich es dir gefällt, bevor dieser Beitrag im Archiv verschwindet (das kann vllt schon morgen oder ü.morgen so weit sein)

Ciao
Thorsten

P.S. ähh..ich musste erst mal googeln, was genau "Singlemalt" ist :-)...aber als ich dann "Whiskey" las, war mein 1. Gedanke = "ihh..bäh bäh" :-)
Sorry, wenns alkoholisch wird, mag ich echt nur Bier....alles, was nich Bier heißt + hochprozentig ist, ist nix für mich :-)
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
29.11.2023 19:05:56
Proteus
Da bin ich wieder.

vielen vielen Dank für deine Arbeit.
Dafür darfst du auch etwas Eigenlob benutzen.

Mein erster Test sagt mir das alles funktioniert wie es soll.
Du hast mit deiner Arbeit wirklich viel Text eingespart. Die Beschriftung für die Button der Startseite war viel Tipperei, da ist deines wirklich schick.
Verstehen tu ich den Code noch nicht so ganz, aber je öfters ich es mir anschaue, desto logischer wird es.

Ich musste etwas suchen wo du das Leeren des Textfeldes nach dem Speicherbutton versteckt hast, hab es im Klassenmodul aber gefunden.

Ich fühle mich sehr geehrt ein Lob von dir im Code zu finden.
Das abschalten des X in der Ecke hat den Grund das alles auf einem Touchmonitor läuft. Daran ist keine Tastatur oder Maus. Mit dem ausblenden der Task-Leiste ist somit ein unbefugter Zugriff verhindert.
Das Admin Passwort wird im Produktivsystem natürlich wieder genutzt.
Das du viele meiner Module und Codezeilen übrig gelassen hast, bestärkt mich darin, dass ich mit meinem ERSTEN VBA Projekt gar nicht so schlecht unterwegs war. Es besteht also noch Hoffnung das Wissen weiter auszubauen.


Somit dürften wir hier erstmal fertig sein.

einzig ein Timer oder ähnliches welcher die Multipage immer zurück auf die Starseite springen lässt wäre noch ein Traum. Aber ich denke das ist ein eigenes Projekt was vielleicht auch erst später kommt. Ob es zu bestimmten Uhrzeiten (wäre sehr einfach zu machen) oder nach x Minuten ohne Eingabe (wäre umständlicher) sein soll weiß ich selber noch nicht.


Nochmals tausend Dank.
Gruß
Jörg

Wenn du mal im Kreis Paderborn unterwegs bist, löse ich mein Versprechen mit dem Getränk auch gerne ein..
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
29.11.2023 20:51:14
Oberschlumpf
Hi Jörg,

cool! Freut mich, dass ich helfen konnte. Und auch ich hab ja dabei was gelernt ;-)

Ich hätt da übrigens noch viele weitere Ideen, die Datei zu verbessern, z Bsp...

...im Datenblatt einfach per VBA verhindern, dass ganze Zeilen/Spalten gelöscht/hinzugefügt werden
...bei Eingabe eines neuen Kollegen in unterster Zeile einfach nach Eingabe vom Namen in Spalte A den sofort in die bestehende Namensliste einzusortieren und natürlich alle Formeln anpassen/korrigieren, wenn erforderlich
...alle Daten, z Bsp Pfad-Eintrag in Zelle B2, die nichts mit den Personendaten zu tun haben, sondern "nur" für die "VBA-Fernsteuerung" der Datei notwendig sind, in ein eigenes Blatt, Name z Bsp "Config", verschieben. Und dieses Blatt könnte dann ausgeblendet sein - ein extra Button könnte das Blatt dann bei Bedarf auch wieder ein- und ausblenden - Button auch gern mit PW-Abfrage
...ich bin sicher, mir würde noch so einiges einfallen, wenn ich mir die Datei noch weiter anschaue :-)

Aber du schreibst ja selbst: "für jetzt erst mal fertig!" :-)
Wenn du interessiert bist, kannste ja n neuen Beitrag erstellen und meine Ideen als Fragen formulieren.

Ach ja, klick auch mal auf den Button "Gruppe 2" für die "Fotowand"...vorher kam es zum Fehler, weil es in Tabelle für Gruppe 2 gar keine "x" oder 1,2,3 Einträge gibt - hab den Fehler behoben.

Ciao
Thorsten

...is eher unwahrsch. dass ich mal in Paderborn oder in der Nähe bin, aber wenn doch, stell ich mich auf euern Marktplatz und ruf ganz laut nach dir^^ :-)))
AW: Tabelle durchsuchen und Ergebnisse in Textfelder ausgeben
27.11.2023 20:37:13
Proteus
Schande über mein Haupt. Ich mit den Gepflogenheiten im Forum noch nicht so vertraut.

Laufzeitfehler '438'
Objekt unterstützt diese Eigenschaft oder Methode nicht

Ich hoffe das hilft etwas.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige