Collapse column

Autor Thema: Office 2013: With für mehrere Objekte  (Gelesen 790 mal)

Offline Jonny

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Office 2013: With für mehrere Objekte
« am: Juli 19, 2017, 13:25:04 Nachmittag »
hallo geschätzte VBA profis!

ich habe ein problem bei dem ich um rat fragen möchte.
ich spreche mit meinm VBA code mehrere Textboxen an.
es sind allerdings ganz bestimmte textboxen, wie zb TextBox3 und TextBox6, wie im auszug des codes ersichtlich.

        With TextBox3
        .Value = ""
        .Enabled = False
        .BackColor = RGB(235, 235, 235)
        End With

        With TextBox6
        .Value = ""
        .Enabled = False
        .BackColor = RGB(235, 235, 235)
        End With

insgesamt geht es um 14 Textboxen die ich bearbeiten möchte - dadurch wird der code sehr unübersichtlich und ich möchte ihn gerne optimieren.
mit einer schleife (for... next...) komme ich leider nicht zurecht, da die nummern der Textboxen nicht fortlaufend sind.

kann mir bitte jemand einen tipp geben!?

ich stelle mir das in etwa so vor, dass man schreibt

        With TextBox3 And TextBox6 And 'alle Textboxen aufzählen
        ...
        End With

aber das funktioniert leider nicht.
hat jemand eine idee?

vielen dank, jonny

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2013: With für mehrere Objekte
« Antwort #1 am: Juli 19, 2017, 20:02:21 Nachmittag »
Hallo,

hier mal ein Beispiel, wenn es sich um alle Textboxen in der UserForm handelt...

Code: Visual Basic
  1. Sub Test()
  2.  
  3.   Dim objControl As Control
  4.  
  5.   For Each objControl In Me.Controls
  6.    
  7.     If Not LCase(TypeName(objControl)) <> "textbox" Then
  8.    
  9.       objControl.Value = ""
  10.       objControl.Enabled = False
  11.       objControl.BackColor = RGB(235, 235, 235)
  12.    
  13.     End If
  14.    
  15.   Next
  16.  
  17. End Sub

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline Jonny

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Antw:Office 2013: With für mehrere Objekte
« Antwort #2 am: Juli 20, 2017, 08:28:53 Vormittag »
danke maninweb für deinen vorschlag!
leider ist es nicht jede textbox die verändert werden soll.
aber ich glaube mittlerweile dass es einfacher ist die namen anzupassen und mit einer loop zu arbeiten...
 

Offline mumpel

  • Spezialist für RibbonX-Programmierung
  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 195
    • Profil anzeigen
    • Microsoft-Office-Add-Ins
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw:Office 2013: With für mehrere Objekte
« Antwort #3 am: Juli 20, 2017, 11:14:41 Vormittag »
Hallo!

Du kannst die Textboxen auch in Frames packen. Die Frames kannst Du ohne Rahmen und Beschriftung darstellen. Alle Textboxen die bearbeitet werden sollen in ein Frame, die anderen in ein anderes Frame. Eventuell musst Du dann Deinen Code entsprechend anpassen. Dann könntest Du die erste Zeile des Codes auf das Frame beschränken (For Each objControl In Me.Frame1.Controls )

Gruß, René

Offline Jonny

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Antw:Office 2013: With für mehrere Objekte
« Antwort #4 am: Juli 20, 2017, 13:41:21 Nachmittag »
auch eine gute idee!
danke!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2013: With für mehrere Objekte
« Antwort #5 am: Juli 20, 2017, 15:53:30 Nachmittag »
Hallo,

alternativ zu mumpel's Vorschlag könntest Du auch eine Select-Case-Anweisung in den Code einbauen.
Beispielsweise:

Code: Visual Basic
  1. Sub Test()
  2.  
  3.   Dim objControl As Control
  4.  
  5.   For Each objControl In Me.Controls
  6.    
  7.     If Not LCase(TypeName(objControl)) <> "textbox" Then
  8.      
  9.       Select Case objControl.Name
  10.      
  11.         Case "TextBox1", _
  12.              "TextBox5", _
  13.              "TextBox10", _
  14.              "TextBox16"
  15.          
  16.           objControl.Value = ""
  17.           objControl.Enabled = False
  18.           objControl.BackColor = RGB(235, 235, 235)
  19.        
  20.         Case Else
  21.        
  22.       End Select
  23.      
  24.     End If
  25.    
  26.   Next
  27.  
  28. End Sub

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.