Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Feldnamen dynamisch erzeigen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Technologietag mit Live-Bearbeitung in Seebach
Autor Thema:  Feldnamen dynamisch erzeigen (1383 mal gelesen)
pampel
Mitglied
Lehrer


Sehen Sie sich das Profil von pampel an!   Senden Sie eine Private Message an pampel  Schreiben Sie einen Gästebucheintrag für pampel

Beiträge: 236
Registriert: 18.10.2005

erstellt am: 18. Apr. 2016 10:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

in ein Formular möchte ich Werte per VBA eintragen. Dazu möchte ich eine FOR-NEXT-Schleife benutzen.

Da das aber mehr wie 50 Felder in dem Formular sind möchte ich nicht alle Felder nach dem Schema
Forms.Formular.Feldname01.Value = ...
Forms.Formular.Feldname02.Value = ...
Forms.Formular.Feldname03.Value = ...
...

mit Werten belegen sondern ich will die Nummer mit einer Zählvariablen der FOR-NEXT-Schleife sinngemäß wie folgt dynamisch erzeugen:

i = 1

FOR
  Forms.Formular.Feldname0>i<.Value = ...
  i = i + 1
NEXT

Wie kann ich das machen?


Danke für Hinweise.

Gruß,

Stefan

------------------
SW 2014 Academic

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pampel
Mitglied
Lehrer


Sehen Sie sich das Profil von pampel an!   Senden Sie eine Private Message an pampel  Schreiben Sie einen Gästebucheintrag für pampel

Beiträge: 236
Registriert: 18.10.2005

erstellt am: 18. Apr. 2016 10:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Sorry, falsches Forum !!!

------------------
SW 2014 Academic

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 18. Apr. 2016 16:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pampel 10 Unities + Antwort hilfreich

Hallo pampel,

auch wenn das hier das Falsche Brett ist mal ein Lösungsvorschlag. In diesem Beispiel werden 3 Eingabefleder erzeugt mit gleichem Abstand.

Code:
Private Sub UserForm_Initialize()
 
Dim objTextBox As MSForms.TextBox
Dim i As Integer
i = 0

For i = 0 To 2

  Set objTextBox = Me.Controls.Add("Forms.TextBox.1", "TEXTBOXNAME" & i, True)
  With objTextBox
    .Left = 6
    .Top = 6 + (22 * i)
    .Width = 72
    .Height = 20
  End With
  Set objTextBox = Nothing
Next i

End Sub


Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 18. Apr. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 19. Apr. 2016 08:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pampel 10 Unities + Antwort hilfreich


29461_control-arrays-mal-anders.png

 
Hallo Stefan,

in VBA gibt es leider keine Control-Arrays, das wirst du nicht so machen können wie du dir das vorstellst. Und den Namen des Textfelds vorher zusammenzusetzen würde ein doppeltes Parsen der Codezeile bedeuten, ich glaube nicht, dass VBA das kann (MEDUSA konnte das mit dem @-Trick, aber das ist auch schon 25 Jahre her   )

Du kannst diese Art von Array, genauer eigentlich Collection, aber indirekt ansprechen. Es gibt für die Forms und auch z.B. für Frames (also die Objekte, die andere Controls wie Textfelder beinhalten können) eine Eigenschaft, in der diese Controls gesammelt sind. Diese kannst du über eine laufende Nummer ansprechen. Die Nummer innerhalb dieser Control-Collection kommt durch den Einfügezeitpunkt zustande, nicht über den Namen der Textbox.

Ich hab ein kleines Beispiel gepuzzelt, Aufbau der Form und der Textfelder siehe Screenshot, der Codeschnipsel sieht so aus:

Code:
Private Sub CommandButton1_Click()

    Dim AnzahlControlsInFrame       As Long
    Dim AusgabeText                 As String
   
    AnzahlControlsInFrame = Frame1.Controls.Count
   
    For i = 0 To AnzahlControlsInFrame - 1
       
        AusgabeText = i & ": "
        AusgabeText = AusgabeText & Frame1.Controls.Item(i).Name & " "
        AusgabeText = AusgabeText & Frame1.Controls.Item(i).Text
   
        Debug.Print AusgabeText
   
    Next

End Sub



Ich habe die Textfelder deswegen in einen Frame gepackt, weil du ja üblicherweise auf der Userform noch eine Menge anderer Controls hast (vor allem bei 50 Textfeldern  ).

Vielleicht ist das ein Ansatz für dich, ansonsten bleibt wohl nur viele Zeilen Code zu schreiben  

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 19. Apr. 2016 13:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pampel 10 Unities + Antwort hilfreich

Hallo zusammen,

also bei mir funktionierte das Abrufen mit dem von mir "vordefinierten" Namen bei meinem Test.

Code:
Private Sub CommandButton1_Click()

i = 0

For i = 0 To 2
MsgBox Me.Controls("TEXTBOX" & i).Value
Next i

End Sub


Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 20. Apr. 2016 07:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pampel 10 Unities + Antwort hilfreich

Hallo Bernd,

tatsächlich, das geht direkt. Das macht die Sache natürlich noch viel einfacher 

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz