Office: VBA Code für UserForm kürzen

Helfe beim Thema VBA Code für UserForm kürzen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Ralf, ich weiß nicht genau wo ich deinen code einfügen soll und was die einzelnen Teile deines Codes bewirken. Soll ich den Code in der... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von LiGru, 21. Dezember 2020.

  1. VBA Code für UserForm kürzen


    Hallo Ralf,

    ich weiß nicht genau wo ich deinen code einfügen soll und was die einzelnen Teile deines Codes bewirken.

    Soll ich den Code in der Suchfunktion einsetzen?
    Bei dem "text" kann ich da auch ein rng.offset einsetzen?

    Die Datei hat 247 kb.
     
  2. 247 kb ist doch nicht groß.

    ich hab dir keinen Code geschickt ,oder doch? ist zu lange her.
     
    ralf_bx, 13. Januar 2021
    #17
  3. Zippe.
    Teilarchive falls nötig.
     
  4. VBA Code für UserForm kürzen

    Habe es jetzt auch mal hinbekommen, danke!

    Sorry @ralf_bx, ich meinte den Code von @1Matthias.

    Am wichtigsten ist für mich gerade die Fehlerprävention. Ist es möglich "alle" Fehler übergreifend abzufangen?
    Ich habe bspw. bei den Raumnummern durch den neuen Code das Problem, dass er mir zum Teil anzeigt "Index außerhalb des gültigen Bereiches", obwohl an sich alles stimmt..
     
  5. index außerhalb des Bereiches heisst du greifts auf ein Element zu was es nicht gibt. = Fehler

    Alle Fehler pauschal abfangen ist ein heißes Eisen. Immerhin mußt du schon gewährleisten das deine Eingaben auch richtig sind und die Werte an die richtigen Stellen gelangen. Wenn z.b. Fehler übergangen werden weis man nicht was hinten bei raus kommt.

    erzeugst du die Tabellen mit den Raumnummern? Ist das Handarbeit?
     
    ralf_bx, 15. Januar 2021
    #20
  6. Ich konnte den Fehler bereits beheben, aber habe jetzt einen neuen der für mich keinen Sinn ergibt *weinen

    Ich ziehe die Raumnummern per Suche in die ComboBox, haut fast überall hin. Bei einem Fall ist es das "1. OG", was sonst überall klappt und auch überall gleich ist, aber er haut bei diesem Fall den Laufzeitfehler ´380´ungültiger Eigenschaftswert raus. Ändere ich "1. OG" aber auf "EG" funktioniert es wieder. *mad.gif*


    Bei offen für Vorschläge wie ich die Fehler am besten abfangen kann/soll, das Problem ist nur, dass die Anwender auf keinen Fall ins Makro gelangen sollen.

    Die Raumnummern kriege ich immer aus einer anderen Datei und kopiere sie dann in die Tabelle.
     
  7. naja die Raumnummer Suche scheint ein bissel umständlich.

    Grundsatz: gleiche Daten gehören in eine Tabelle.
    du hast über 10 Tabellenblätter und darin nochmal einige Tabellen, aus denen du Werte holst.

    Das ist natürlich fehleranfällig . Allein schon deshalb weil du die ganzen Bereichs- und Tabellennamen alle auf die Reihe bekommen mußt.

    ich habe da eine Idee und schon etwas dran probiert.
    Aber das bleibt erstmal geheim.

    Wenn du Fehler beschreibst, ist es hilfreich genau zu beschreiben wo , wie , was passiert. Wie soll ich nachstellen wo du irgendwie auf nen Fehler gelaufen bist?


    gruß

    rb
     
    ralf_bx, 15. Januar 2021
    #22
  8. VBA Code für UserForm kürzen

    Den Grundsatz habe ich schon versucht umzusetzen. Ich habe leider aber keine Ideet wie ich ca. 17 Häusern ihren entsprechenden Ebenen, Raumnummern und Raumbezeichnungen zuweise..

    Alles klar. Der Fehler ist in den Beispieldateien nicht abzubilden, da die persönlichen Daten fehlen.

    In Zeile 1 der Tabelle steht bei Ebene "1. OG" und Raum-Nr. "1-0-61", wenn ich versuche es per Suchfunktion in die UserForm zu ziehen sagt er "Laufzeitfehler 380 - ungültiger Eigenschaftswert"
    In Zeile 7 der Tabelle steht genau das gleiche. Ebene "1. OG" und Raum-Nr. "1-0-61", aber da funktioniert die Suchfunktion.

    Habe noch eine Frage..
    Ist es möglich zu ermitteln ob ein Exit Sub durchgeführt wurde?

    Ich würde gerne alle Pflichtfelder in eine Funktion schreiben, das Problem ist, dass der Sub nach dem Exit Sub in der Funktion trotzdem weiterläuft.

    Zum Beispiel so:
    Code:
    Bei mir läuft er danach den Sub nämlich einfach weiter durch..
     
  9. OfficeUser Neuer User
    laut der Auswertung der Beispieldatei hast du kein 1.OG mit der Raumnummer 1-0-61. folglich ist ein Fehler logisch.

     ABCDE
    1ResidenzEbeneBezEbeneRaum-Nr.Raumbezeichnung
    2012HertenEG1-01-0-61Küche
    2537WittenEG1-01-0-61Küche
    2808KapellenEG1-01-0-61Küche

    ein exit sub in einer function ist quatsch.
    du verläßt damit nur die jeweilige methode
    du kannst eine function mit einem Rückgabewert ausstatten und diesen dann auswerten um die sub zu beenden.

    sub()
    dim x as Boolean
    if func=true then exit sub
    end sub


    func (b as Boolen) as Boolean
    func = iif(b=true, false, true)
    end func
     
    OfficeUser, 15. Januar 2021
    #24
  10. Ich kann das mit der Raumnummer gerade nicht prüfen, aber klingt logisch und vertraue dir *wink.gif*

    Genau so ähnlich habe ich es mir vorgestellt, wusste nur nicht wie ich es schreiben soll. Perfekt, vielen Dank dafür schon mal!

    Dann habe ich das nächste Problem, sorry *rolleyes.gif*

    Ich ziehe mit der Suchfunktion vom Sachbearbeiter die Daten aus der Liste, aber wenn der Sachbearbeiter nicht in der Datenbank vorhanden ist, wird die ComboBox in der Userform einfach leer gelassen (was nicht gewollt ist).
    Habe die selben Einstellungen bei der ComboBox_angezeigt_an, aber da funktioniert es. Dort zieht er auch nicht in der Datenbank vorhandene Werte in die Userform. Eine Idee?
     
  11. Habe das Problem auch wieder lösen können, lag an meinem Code *redface.gif*

    @ralf_bx wo würde ich dann die Bedingungen reinschreiben? Es muss ja eigentlich in die Funktion damit es Sub übergreifend funktioniert oder?

    Habe noch ein paar Fragen, sorry..

    1. Ist es möglich die Suche per .find auf einen exakten Wert festzulegen? WEnn ich bspw. "6" suche, es die Nummer aber nicht gibt, dann zeigt er mir die Daten zu dem Wert "16" an *mad.gif*

    2. Ich kriege momentan nach ein paar Anwendungen mit der Suchfunktion immer wieder den Fehler "Laufzeitfehler 380 - ungültiger Eigenschaftswert" bei der Raumnummer, obwohl es eigentlich kein Fehler ist. Wenn ich den gleichen Wert danach suche funktioniert es wieder. Habt ihr eine Idee woran das liegen könnte?

    3. Könnt ihr mir erklären was genau das .ListIndex > - 1 macht? Ich habe es im Code drin und es funktioniert auch perfekt, aber weiß leider nicht was es genau macht *rolleyes.gif*

    Vielen Dank mal wieder!
     
  12. 1. mit
    Code:
    xlwhole suchst du nach vollständige Übereinstimmung. Das entspricht der manuellen Suche (Strg+f), Optionen, gesamten Zelleninhalt vergleichen.
    xlValues = Suche in Werte, statt in Formeln
    Setze im VBE den Cursor auf Find und drücke F1, da wird dir geholfen.

    2. es scheint ein Datenformat-Problem zu sein. Prüfe beim Ausführen des Codes im Einzelschritt (F8 im VBE) die Anzeigen im Lokal-Fenster.

    3. Auch hier führt beim Drücken von F1 während der Cursor auf ListIndex steht zur Aufklärung.
    The ListIndex property contains an index of the selected row in a list. Values of ListIndex range from -1 to one less than the total number of rows in a list (that is, ListCount - 1). When no rows are selected, ListIndex returns -1.

    When the user selects a row in a ListBox or ComboBox, the system sets the ListIndex value. The ListIndex value of the first row in a list is 0, the value of the second row is 1, and so on.
     
  13. VBA Code für UserForm kürzen

    1. Habe es so probiert wie du gesagt hast und bin auf "MatchCase:=True", aber auch dabei würde er bei einer nicht vorhandenen "6" noch die "16" anzeigen.
    .Select geht bei mir nicht, da ich nicht eine bestimmte Zelle, sondern einen Bereich durchsuche.. Gibt es da also keine Möglichkeit wie ich das unterbinden kann?

    2. hat mir geholfen, vielen Dank!

    3. perfekt, auch hierfür danke!

    Ihr habt mir ja davon abgeraten, Fehler allgemein abzufangen. Kannst du mir den Grund dafür nennen und einen Tipp geben wie ich das Problem am besten lösen kann?

    Sorry, dass ich so viele Fragen stelle *depressed
     
  14. Moin,

    sag mal liest du dir auch gelegentlich ne Onlinedokumentation zu den Funktionen durch?
    MatchCase zielt auf Groß-/Kleinschreibung ab und nicht auf Teil-oder gesamten Zellinhalt so wie es Lookat:=xlwhole oder xlpart macht.

    Ich hab mich eine ganze Weile mit deinem Beispiel beschäftigt und muß sagen das dein Beispiel mich ganz schön Nerven gekostet hat. Weil es zum testen an Beispieldaten fehlt. Somit läuft die Userform immer auf Fehler nur weil du mit Tabelleneinträgen gespart hast.

    Die vielen Raumtabellen habe ich mit Powerquery mit ein paar Klicks zusammengefasst und eine Funktion geschrieben, die auf Tabellen zugreift und Ergebnislisten für deine Auswahllisten und Textboxen zurückgibt. Aber da du bereits weiterentwickelt hast, wird das evtl. nicht zum aktuellen Stand passen.
    Ich halte deinen Ansatz mit den vielen Listobjects pro Liegenschaft für zu aufwendig. Maximal eine Tabelle pro Liegenschaft für die Räume. Wenn vergleichbar, dann eine Raumtabelle für alle Liegenschaften. Die kann man filtern und durchsuchen nach Herzenslust.

    Du wertest bei den Optionbuttons(a,b,c,...) das click_event aus. Das ist suboptimal. Es ist besser das change_event auszuwerten. Denn das tritt auf wenn der Wert sich ändert, ob du darauf geklickt hast oder nicht.

    wie ist denn dein aktueller Stand?

    gruß

    rb
     
    ralf_bx, 18. Januar 2021
    #29
  15. Hallo Ralf,

    vielen Dank erstmal für die Kritik!

    Habe die Onlinedokumentation gelesen, aber habe gehofft, dass es eventuell was bringt..

    Tut mir leid, dass du so viel Zeit und Nerven in meine Datei investiert hast.. Ich habe alle möglichen Daten zur Verfügung gestellt, den Rest kann ich leider nicht hochladen, da es sensible Daten enthält.

    Bei den Raumtabellen gebe ich dir vollkommen recht, dass es aufwendig ist, aber ich hatte keine Idee, wie ich die ganzen Raumdaten in einer Tabelle zusammenfassen kann. Das Problem ist, dass die Daten meiner Meinung nach nicht wirklich vergleichbar sind. Die Anzahl der Räume und Ebenen, ändert sich von Residenz zu Residenz.

    Das mit den OptionButton habe ich direkt umgesetzt, hast du recht, ist viel schlauer so.

    Ich dachte, dass ich es in den letzten Tagen gut hinbekommen habe. Konnte viel kürzen und es läuft reibungslos, aber nach deiner Kritik bin ich etwas skeptisch.

    Bin so weit, dass ich alle 3 Dateien in einer zusammengefasst habe, ich weiß nicht mehr genau wer im Forum den Tipp gegeben hat. Dadurch läuft es flüssiger und ich konnte viel Code sparen. Das laden der Datei dauert nur logischerweise länger, durch die ganzen Tabellen.

    Das einzige was mir gerade noch Bauchschmerzen bereitet ist die Fehlerprävention. Ich fange gerade alle Fehler ab, die mir beim testen soweit aufgefallen sind. Aber wenn weitere Fehler anfallen, würde der Anwender direkt ins Makro gelangen.. Sonst versuche ich gerade nur noch deinen Code zum zusammenfassen der Pflichtfelder an die Datei anzupassen.

    Bin offen für weitere Tipps und versuche im Laufe des Tages nochmal eine aktuelle Beispieldatei hochzuladen.
     
Thema:

VBA Code für UserForm kürzen

Die Seite wird geladen...
  1. VBA Code für UserForm kürzen - Similar Threads - VBA Code UserForm

  2. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  3. VBA Code für Zeilen ausblenden einblenden mit JA/Nein

    in Microsoft Excel Hilfe
    VBA Code für Zeilen ausblenden einblenden mit JA/Nein: Hallo, habe eine Exceltabelle, bei der ich bei einer Zelle eine Ja/Nein abfrage mache, wenn in der Zelle Nein steht, dann soll ein bestimmter Zeilenbereich, den ich definieren möchte, ausgeblendet...
  4. VBA Code ohne ergebnis

    in Microsoft Excel Hilfe
    VBA Code ohne ergebnis: Hallo, ich habe einen VBA Code der in meiner Tabelle nicht funktioniert. Kann mir vielleicht jemand bei der Korrektur ggf. weiter helfen? Danke und Gruß Private Sub Worksheet_Change(ByVal Target...
  5. VBA Code Anpassen "Wert Einfügen statt Formel"

    in Microsoft Excel Hilfe
    VBA Code Anpassen "Wert Einfügen statt Formel": Hallo alle zusammen. Ich benötige bitte Hilfe von einem Experten, da ich mit meinem Code unzufrieden bin und dieser bei größeren Datenmengen respektive Zeilen ziemlich langsam wird. Wie müsste man...
  6. UserForm zum bearbeiten von Tabellen und speichern

    in Microsoft Excel Hilfe
    UserForm zum bearbeiten von Tabellen und speichern: Guten Tag Ich habe leider ein Problem, das mich zur Verzweiflung bringt. Vielleicht findet hier jemand einen Lösung für mein Problem. Ich bekommen leider einen Laufzeitfehler '1004'. Zur...
  7. VBA Code Tabellenblatt kopieren und UserForm

    in Microsoft Excel Hilfe
    VBA Code Tabellenblatt kopieren und UserForm: Hallo, ich hoffe mir kann jemand helfen. Schon mal vielen Dank für die Unterstützung. Folgende Thematik: In dem Blatt 1 ist ein ComandButton. Mit Klick soll über VBA folgendes abgefragt...
  8. Userform code - "best practices"?

    in Microsoft Excel Hilfe
    Userform code - "best practices"?: Hallo Ich arbeite mit Userforms. Wo speichert ihr den Code für die Formulare? In den Userforms oder in Module? Gruss Maria
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden