Public strings in einer schleife verarbeiten

Plattform office 2003, Win XP

Ich möchte Werte die in einer Userform erzeigt wurden
in einem Tabellenblatt per Makro in einer Schleife verarbeiten, leider klappt das nicht.

Ich habs folgender Maßen versucht:
Modul 1:
Public Wein1 as String
Public Wein2 as String
Public Wein3 as String bis 77.
Nach bearbeiten der mittels der Userform haben alle Strings Werte oder auch nicht.
sub erfassen()
Dim wert, wert1, wert2, wert3, wert4
wert = 26
wert1 = Worksheets(„Form“).Range(„x2“).Value
wert2 = Worksheets(„Form“).Range(„x2“).Value
wert3 = 1
wert4 =„Wein“ & wert3
Cells(wert1, 25).Value = kunde
For i = 1 To 77
Cells(wert1, wert).Value = wert4
wert = wert + 1
wert3 = wert3 + 1
Next i
Worksheets(„Form“).Range(„x2“).Value = wert2 + 1
End Sub

Leider spricht wert4 nicht den String Wein1 an

Hallo Fritz,

Option Explicit
Option Base 1

Public Wein(77) As String

Sub erfassen()
Dim Zei As Long, i as Integer
With Worksheets("Form").Range("x2")
 Zei = .Value
 Cells(Zei, 25).Value = kunde
 For i = 1 To 77
 Cells(Zei, 25 + i).Value = Wein(i)
 Next i
 .Value = .Value + 1
End With
End Sub

Gruß
Reinhard

Codekorrektur
Hallo Fritz,

Option Explicit
Option Base 1

Public Wein(77) As String

Sub erfassen()
Dim Zei As Long
With Worksheets("Form")
 Zei = .Range("x2").Value
 .Cells(Zei, 25).Value = kunde
 For i = 1 To 77
 .Cells(Zei, 25 + i).Value = Wein(i)
 Next i
 .Range("x2").Value = .Range("x2").Value + 1
End With
End Sub

Gruß
Reinhard

Danke Dir Reinhard, komme gerade von der Nachtschicht und muß erst mal schlafen. Probiere ich nachher sofort aus und poste Dir das Ergebnis.
Danke im Vorraus, erspart mior viel Arbeit, mfg fritz

Hallo Reinhard,
funzt leider auch nicht, ist das gleiche Prob wie in meinem Code.
Wenn ich anstatt
wert4 =„Wein“ & wert3
angesteuerte zelle = wert4

angesteuerte zelle = wein1

eingebe, funktioniert es.

Irgendwo im Forum hab ich was von Klassenmodulen gelesen und das man in diesen Objekt zur Bearbeitung klassifizieren muß.

Danke trotzdem für Deine Mühe

Ps : Ein gutes hat es Public wein(77) as string klappt.
Die folgenden kann ich weglassen (wein2, wein3 usw.)

Hallo Fritz,

funzt leider auch nicht, ist das gleiche Prob wie in meinem
Code.

sehe ich nicht so :smile:

Wenn ich anstatt
wert4 =„Wein“ & wert3
angesteuerte zelle = wert4
angesteuerte zelle = wein1
eingebe, funktioniert es.

Die ganzen wertx habe ich doch aus dem Code rausgeworfen, konnte da keinen Sinn drin erkennen.

Irgendwo im Forum hab ich was von Klassenmodulen gelesen und
das man in diesen Objekt zur Bearbeitung klassifizieren muß.

Für eine Sache die ein Aray erledigen kann braucht man m.E. kein Klassenmodul.
Ein Klassenmodul würde Sinn machen wenn du direkt auf Eingaben in 77 Textboxen auf einer Userform reagieren wolltest.

Ps : Ein gutes hat es Public wein(77) as string klappt.
Die folgenden kann ich weglassen (wein2, wein3 usw.)

Du hast ein Array von 77 Elementen mit den Namen Wein(1), Wein(2),…Wein(77).
Da brauchst du kein wein4, wert4 mehr…

Nimm eine neue leere Mappe und starte die prozedur „daten“.
Danach haste in den 77 Spalten Z:CX deine 77 Werte von Wein(i).
Die Werte sind entweder nix oder ein Buchstabe.

Option Explicit
Option Base 1

Public Wein(77) As String
Public Kunde As String

Sub Daten()
Dim i As Integer, N As Integer
Worksheets("Tabelle1").UsedRange.ClearContents
Worksheets("Tabelle1").Range("x2").Value = 5
For N = 1 To 10
 For i = 1 To 77
 Wein(i) = IIf(Int(Rnd() \* 2) = 0, "", Chr(65 + Int(Rnd() \* 25)))
 Next i
 Call erfassen
Next N
End Sub

Sub erfassen()
Dim Zei As Long, i As Integer
With Worksheets("Tabelle1")
 Zei = .Range("x2").Value
 .Cells(Zei, 25).Value = Kunde
 For i = 1 To 77
 .Cells(Zei, 25 + i).Value = Wein(i)
 Next i
 .Range("x2").Value = .Range("x2").Value + 1
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,
Probier ich zeitnah aus, teste es in einer leeren Mappe. Danke, ich melde mich.