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

Code kürzen. Auf Userform Images an aus

Code kürzen. Auf Userform Images an aus
06.05.2021 15:16:17
Dieter(Drummer)
Guten Tag VBA SpezialistenInnen.
Der Code unter Userform ermöglicht, bei Klick auf z.B. Image1 (img1), dass img1 deaktiviert und img1a aktiviert wird.
Dies gilt auch für weitere Images (imgs). Gesamt sind es die Images: img1, img1a, img2, img2a … bis img0. img0a.
Das funktioniert mit meinem Code.
Frage: Kann man den Code kürzer fassen und wenn ja wie muss er dann lauten?
Mit der Bitte um Hilfe und
Gruß, Dieter(Drummer)
'Hier mein Code und meine Bespieldatei: https://www.herber.de/bbs/user/146036.xlsm
  • 
    Private Sub img1_Click()
    Application.Speech.Speak "1", SpeakAsync:=True
    img1.Visible = False
    img1a.Visible = True
    End Sub
    
    
    Private Sub img2_Click()
    Application.Speech.Speak "2", SpeakAsync:=True
    img2.Visible = False
    img2a.Visible = True
    End Sub
    
    
    Private Sub img3_Click()
    Application.Speech.Speak "3", SpeakAsync:=True
    img3.Visible = False
    img3a.Visible = True
    End Sub
    
    
    Private Sub img4_Click()
    Application.Speech.Speak "4", SpeakAsync:=True
    img4.Visible = False
    img4a.Visible = True
    End Sub
    
    
    Private Sub img5_Click()
    Application.Speech.Speak "5", SpeakAsync:=True
    img5.Visible = False
    img5a.Visible = True
    End Sub
    
    
    Private Sub img6_Click()
    Application.Speech.Speak "6", SpeakAsync:=True
    img6.Visible = False
    img6a.Visible = True
    End Sub
    
    
    Private Sub img7_Click()
    Application.Speech.Speak "7", SpeakAsync:=True
    img7.Visible = False
    img7a.Visible = True
    End Sub
    
    
    Private Sub img8_Click()
    Application.Speech.Speak "8", SpeakAsync:=True
    img8.Visible = False
    img8a.Visible = True
    End Sub
    
    
    Private Sub img9_Click()
    Application.Speech.Speak "9", SpeakAsync:=True
    img9.Visible = False
    img9a.Visible = True
    End Sub
    
    
    Private Sub img0_Click()
    Application.Speech.Speak "0", SpeakAsync:=True
    img0.Visible = False
    img0a.Visible = True
    End Sub
    
  • 11
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Code kürzen. Auf Userform Images an aus
    06.05.2021 15:26:41
    Daniel
    Hi
    du kannst den Code, der ja immer gleich ist, in ein eigenes Makro auslagern und dann diesen mit Übergabe des Wertes 0-8 aus den einzelnen Click-Events heraus aufrufen.
    Dann brauchst du pro Click-Event nur eine Zeile.
    Das als normales Makro im Modul der Userform
    
    Sub DenkDirSelberEinenNamenAus(X as string)
    Application.Speech.Speak X, SpeakAsync:=True
    Me.Controls("img" & X ).Visible = False
    Me.Controls("img" & X & "a").Visible = True
    End Sub
    
    Und so dann die Klick-Events
    
    Private Sub img1_Click()
    DenkDirSelberEinenNamenAus "1"
    End Sub
    Private Sub img2_Click()
    DenkDirSelberEinenNamenAus "2"
    End Sub
    usw
    
    es ließe sich zwar mit Hilfe von Klassenprogrammierung noch weiter verkürzen, so dass die Einzlnen Klick-Eventmakros entfallen können, aber das ist dann etwas komplizierter, noch nicht ganz deine Liga.
    Gruß Daniel
    Anzeige
    AW: Code kürzen. Auf Userform Images an aus
    06.05.2021 15:35:17
    Dieter(Drummer)
    Danke Daniel,
    für deine prima Lösung. Damit ist mir schon geholfen.
    Gruß, Dieter (Drummer)
    AW: Klappt perfekt. Danke Daniel ... owT
    06.05.2021 15:43:35
    Dieter(Drummer)
    AW: Noch eine Frage Daniel ...
    06.05.2021 16:25:26
    Dieter(Drummer)
    Hallo Daniel,
    hast du auch eine kürzere Lösung für den Code auf der Userform, für die Imgs mit Wechsel von A auf a, Ä auf ä, C auf c ...?
    Wäre schön wenn es da auch eine kürzere Lösung gäbe.
    Gruß, Dieter(Drummer)
    Der Jetzige Code lautet:
    'Wechsel einzelne Groß-Buchstaben
  • 
    Private Sub img11_Click() 'A
    img11.Visible = False
    img40.Visible = True
    End Sub
    
    
    Private Sub img12_Click() 'Ä
    img12.Visible = False
    img41.Visible = True
    End Sub
    

  • Anzeige
    AW: Noch eine Frage Daniel ...
    06.05.2021 16:39:08
    Daniel
    HI
    kommt darauf an.
    du könntest hier als Übergabeparameter eine Zahl wählen und dann fürs Ausblenden 9 hinzuaddieren.
    sollte es in der Benennung keine regelmäßigkeit geben brauchst du dann eben zwei Übergabeparameter.
    wobei sich das bei zwei Programmzeilen nicht wirklich lohnt.
    da kannst du das auch direkt im Click-Makro belassen
    Gruß Daniel
    AW: Noch eine Frage Daniel ...
    06.05.2021 16:46:27
    Dieter(Drummer)
    Hallo Daniel,
    Danke für Rückinfo.
    Ich dachte das wäre auch einfacher möglich, da der Sprung immer um Zahl 29 geht. Also IMG A ist img11, false und dann img40, true ...
    Gruß, Dieter(Drummer)
    AW: Noch eine Frage Daniel ...
    06.05.2021 16:54:52
    Daniel
    naja schrieb ich doch, dann einfach dazu addieren.
    ob jetzt n 9, oder 29 oder was auch immer.
    wo ist da jetzt das Problem? Du bist ja kein VBA-Anfänger mehr.
    Gruß Daniel
    Anzeige
    AW: Noch eine Frage Daniel ...
    06.05.2021 17:00:26
    Dieter(Drummer)
    Hallo Daniel,
    da werde ich Versuche starten ...
    Gruß, Dieter(Drummer)
    AW: Noch eine Frage Daniel ...
    06.05.2021 17:16:00
    Dieter(Drummer)
    Hallo Daniel,
    habe es jetz so gelöst. Es klappt ... Danke dir für deine Hilfe ...
    Gruß, Dieter(Drummer)
  • Sub Buchst(X As String)
    Application.Speech.Speak X, SpeakAsync:=True
    Me.Controls("img" & X).Visible = False
    Me.Controls("img" & X + 29).Visible = True
    End Sub 'Und so dann die Klick-Events
    'Wechsel einzelne Groß-Buchstaben
    
    Private Sub img11_Click() 'A
    Buchst "11"
    End Sub
    

  • Mit Klassen
    06.05.2021 17:54:32
    Nepumuk
    Hallo Dieter,
    mit Klassenprogrammierung geht das so:
    https://www.herber.de/bbs/user/146038.xlsm
    Gruß
    Nepumuk
    Anzeige
    AW: Mit Klassen
    06.05.2021 19:29:59
    Dieter(DRummer)
    Danke Nepumuk,
    eine perfekte und funktionerende Lösung. Die Programmierung geht aber über meine VBA Fähigkieten.
    Ich werde aber dennoch auch deine Lösung nutzen.
    Gruß und Danke,
    Dieter(Drummer)

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige