Access-VBA - Wie müsste ich eine Schleife in VBA, die mir erlaubt, um eine Schleife durch die Kontrolle der Namen
Habe ich etwa 10 Textfelder auf einer form, die tatsächlich verwendet werden für die Anzeige nicht Eintritt. Sie sind benannt txt_001_Name
, txt_002_Title
usw..welche Art von Schleife verwendet.
Welche Art von VBA sollte ich verwenden, um tatsächlich eine Schleife durch die Namen der Textfelder? Also wenn ich auf "Debuggen".drucken, würde das so Aussehen:
txt_001_Title
txt_002_Title
txt_003_Title
Dies ist wahrscheinlich ziemlich einfach zu tun - ein Grund mehr, dass ich lernen sollte, wie!
EDIT: Sorry, ich hätte mehr beschreibenden darüber.
Aufgrund der oben genannten Namenskonvention, ich bin auf der Suche Durchlaufen diese Textfelder so, dass ich etwas leisten kann, mit jedem. Was diese 10 Textfelder tatsächlich repräsentieren numerische Werte, die jeweils eine SQL-Anweisung, die hinter Ihnen in der form onload
Veranstaltung. Ich habe auch einen anderen Satz von zehn halten, dass numerische Werte, die sind wesentlich statischer, und schließlich weitere zehn, die einen Ausdruck verwenden, der zu teilen Sie einfach jedes der ersten zehn, gegen die relative "zweiten" zehn, und der Wert landet in der relativen 3. Also im Grunde es endet auf der Suche wie ein dashboard-Tabelle.
'first ten' 'second ten' 'resulting ten'
---------------------------------------------------
txt_001_value txt_001_calc txt_001_result
txt_002_value txt_002_calc txt_002_result
etc.
Also eigentlich möchte ich dies für die "daraus resultierenden" text-Boxen. Ich möchte eine Schleife durch die ersten zehn und führen Sie diese einfache Berechnung:
me.txt_001_result = me.txt_001_value / me.txt_001_calc
Alle Namenskonventionen "match up", so kann ich Sie manuell eingeben, aus den 10 Zeilen der oben für diese, aber ich bin sicher, es gibt einen besseren Weg (loop through), und ich sollte wohl lernen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Liste mit den Namen der textbox-Steuerelemente mit einem einfachen Verfahren wie diesem:
Könnte man es nennen, aus der form Load-Ereignis:
Aber ich verstehe nicht, was du versuchst zu erreichen. Ich merke, Sie wollen etwas tun, mit ctl.Name andere als
Debug.Print
, aber ich weiß nicht, was das ist.Anstatt computing Ergebnis für mir.txt_001_result und dann zuweisen, dass der Wert der text box, sollten Sie die Option Steuerelement-Quelle für txt_001_result zu txt_001_value /txt_001_calc und lassen Sie den Zugriff setzen Sie den richtigen Wert in txt_001_result für Sie.
In der Antwort auf Ihre Kommentare, ich werde vorschlagen, dieses Verfahren als ein Ausgangspunkt für Sie zu bauen auf:
If Nz(Me.Controls("strCalcControl")) <> 0
Ich lieber mit einer FOR EACH zum Durchlaufen der controls-Auflistung von dem, was der Textfelder sind auf (entweder das Formular selbst oder einem panel-Steuerelement)
Bedeutet auch, können Sie benutzerdefinierte Gruppen (indem Sie diese alle auf den gleichen container).
Beachten Sie, dass wenn Sie anderen Steuerelemente, die Sie brauchen könnten, typecheck in es (
IF TYPEOF(myBox) = "TextBox" THEN ...
)Könnten Sie es auch tun, wie:
Ich bevorzuge definitiv die Für Jede, allerdings.
Kann ich nicht ganz verstehen, warum Sie benötigen, zu tun, was Sie tun, aber ich habe Formulare, wie, wo hatte ich ein ungebundenes Formular, dass ich wollte, um anzuzeigen, eine beliebige Anzahl von Feldern, so kann ich es sehen. Wenn Sie zu Fuß die Auflistung der Steuerelemente nur in der form BeimÖffnen-Ereignis, das ist in Ordnung. Aber wenn Sie es tun, in die beim anzeigen eines gebundenen form oder mehrere Male in ein ungebundenes Formular, sollten Sie erwägen, einen langen post von mir auf verwenden von benutzerdefinierten Sammlungen zur Verwaltung von Gruppen von Steuerelementen.