Objekt

hallo,

ich habe mir eine kleine tabelle erstellt und möchte nun über eine variable eine bestimmte zelle auslesen. die tabelle besteht aus einzelnen textfeldern.

mit folgendem code möchte ich eine zelle auslesen, klappt aber nicht so richtig:

Dim Feld(1 To 10, 1 To 7) As Variant
Dim i As Integer
Dim temp As Object
Public Property Get zellinhalt() As Variant
For i = 1 To 10
temp = „Text“ + Format(i + (i - 1) * 7) + „.text“
Feld(i, 1) = temp
Next i
zellinhalt = Feld
End Property

Hallo cadman,

meinst du das so:

Option Explicit
Option Base 1
'
Dim Feld(10) As Variant
Dim i As Integer
Dim temp As String
'
Public Property Get zellinhalt() As Variant
For i = 1 To 10
 temp = "Text" & 8 \* i - 7 & ".text"
 Feld(i) = temp
Next i
zellinhalt = Feld
End Property
'
Sub test()
Dim Versuch, N
Versuch = zellinhalt
For N = 1 To UBound(Feld)
 MsgBox Versuch(N)
Next N
End Sub

Gruß
Reinhard

hallo,

danke für die antwort, aber es klappt immernoch nicht.

ich will ja bezwecken, dass z.b das textfeld text1 ausgelesen wird und in der feldvariable feld() gespeichert wird.

Nachtrag
Hallo cadman,

ich habe jetzt nur den Code zum Laufen gebracht.

Warum globale Variablen?
Handelt es sich um Excel-Vba?
Warum eine proberty?
Was hat der Code mit dem Auslesen einer zelle zu tun?
Wieso ein zweidimensionales Array für eine Zelle?
u.v.m. Fragen

Gruß
Reinhard

Hallo cadman,

ich habe jetzt nur den Code zum Laufen gebracht.

Warum globale Variablen?

code gehört zu einem benutzersteuerelement mit 4*10 textfeldern

Handelt es sich um Excel-Vba?

nein

Warum eine proberty?

um an die daten ranzukommen ?

Was hat der Code mit dem Auslesen einer zelle zu tun?

noch nicht viel, deswegen frage ich ja :smile:

Wieso ein zweidimensionales Array für eine Zelle?

s.o.

u.v.m. Fragen

Gruß
Reinhard

bin neuling und deswegen wirkt das vielleicht alles ein wenig komisch für erfahrene programmierer

Handelt es sich um Excel-Vba?

nein

Hallo Cadman,

soll man jetzt noch mehrfach fragen bis man das Richtige trifft oer sagste freiwillig von dir aus um was es sich handelt.

je mehr Informationen du hinter dem Berg hälst desto schlechter kann dir geholfen werden.

Gruß
Reinhard

ich habe also eine tabelle gebastetlt und möchte sie nun in meinem programm integrieren. per mausklick möchte ich die zellen (text1 bis text40) auslesen. dazu brauche ich eine variable die den namen des jeweiligen textfeldes darstellt und mit deren hilfe ich diese auslesen kann. ich möchte halt nicht jede einzelne zelle benennen, sondern mir über diesen code den namen praktisch generieren.

Hi,

ich möchte halt nicht
jede einzelne zelle benennen, sondern mir über diesen code den
namen praktisch generieren.

Dann nimm ein Steuerelementefeld.
Steuerelementefelder gibt es aber nur eindimensional.

Lege ein Textfeld auf die Userform und benennst es, wie Du magst. Ich nehme als Beispiel mal ‚txtMatrix‘. Klick das mit rechts an und dann auf ‚kopieren‘. Dann klickst Du auf die Form und dann auf ‚Einfügen‘. Die Frage, ob Du ein Steuerelementefeld möchstest, beantwortest Du mit einem Klick auf ‚Ja‘.

Nun ein Beispielcode, wie Du den Inhalt der Textfelder in ein Array bekommst.

For i = 0 to txtMatrix.Ubound
 Array(i) = txtMatrix(i).Text
Next

Was Du sonst mit Deinem Code vor hast, habe ich nicht verstanden. Vor allem was Format da soll. Das habe ich mit dieser Syntax noch nicht gesehen.

Gruß Rainer

hallo,

vergessen wir mal den ganzen quatsch von eben.

meine eigentliche frage ist :

wie kann ich ein textfeld auslesen ohne den namen direkt anzugeben, sondern ihn eine codezeile generieren.

beispiel:

es gibt das textfeld „text1“

der inhalt soll der variablen test zugeordnet werden

ich will, aber nicht schreiben test=text1.text, sondern „text1.text“ in der variablen „temp“ über verschieden stringfunktionen generieren

Hi,

es gibt das textfeld „text1“

der inhalt soll der variablen test zugeordnet werden

ich will, aber nicht schreiben test=text1.text, sondern
„text1.text“ in der variablen „temp“ über verschieden
stringfunktionen generieren

Du kannst nur den Namen des Steuerelements in den String schreiben, die Eigenschaft nicht.

 Dim test As String
 Dim temp As String
 temp = "Text1"
 test = Me.Controls(temp).Text

Gruß Rainer

OT Format ohne Parameter

verstanden. Vor allem was Format da soll. Das habe ich mit
dieser Syntax noch nicht gesehen.

Hallo Rainer,

ich sah das auch noch nie aber dafür gibt es ja F1.

Scheinbar nutzbar beim Dezimaltrennzeichen ändern und das Vorzeichenbyte bei Zahlenstrings zu entfernen.
Erstaunt hat mich das mit „22.2.2009“, irgendwie hatte ich „22/2/2009“ o.ä. vermutet.

Sub tt()
Dim a
a = 5.5
MsgBox Len(Format(a)) '3
MsgBox Len(Str(a)) '4
MsgBox Format(a) '5,5
MsgBox Str(a) '5.5
a = "27.2.2009"
MsgBox Format(a) '2722009
MsgBox Str(a) '2722009
End Sub

Getestet mit Exel97-Vba, wenn bei VB6 was anderes rauskommt als oben zu sehen dann sag bitte Bescheid, ansonsten gehe ich davon aus in VB kommen die gleichen Ergebnisse.

Gruß
Reinhard

1 Like

Halolo Reinhard,

ich sah das auch noch nie aber dafür gibt es ja F1.

dazu hätte ich VB erst mal starten müssen. :smile:
Das war aber gar nicht der Grund für die Frage, deshalb habe ich auch nicht danach gesucht.

Scheinbar nutzbar beim Dezimaltrennzeichen ändern und das
Vorzeichenbyte bei Zahlenstrings zu entfernen.
Erstaunt hat mich das mit „22.2.2009“, irgendwie hatte ich
„22/2/2009“ o.ä. vermutet.

Sub tt()
Dim a
a = 5.5
MsgBox Len(Format(a)) '3
MsgBox Len(Str(a)) '4
MsgBox Format(a) '5,5
MsgBox Str(a) '5.5
a = „27.2.2009“
MsgBox Format(a) '2722009
MsgBox Str(a) '2722009
End Sub

Getestet mit Exel97-Vba, wenn bei VB6 was anderes rauskommt
als oben zu sehen dann sag bitte Bescheid, ansonsten gehe ich
davon aus in VB kommen die gleichen Ergebnisse.

Speziell:
MsgBox Format(a) '5,5

ist seeeeehr interessant! :smile: Das kann mir etwas Arbeit ersparen, danke!

Gruß Rainer

wenn ich me.controls verwende, kommt die fehlermeldung:

„methode oder datenobjekt nicht gefunden“

Hi,

wenn ich me.controls verwende, kommt die fehlermeldung:

„methode oder datenobjekt nicht gefunden“

weil Du auf einem Usercontrol arbeitest und nicht auf einer Form.

Du musst Me durch den Namen der Form ersetzen, den kenne ich nicht.

Gruß Rainer