Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1072to1076
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array in Klasse übergeben

Array in Klasse übergeben
17.05.2009 19:49:49
trumb23
Ich versuche die Besucherzahlen in eine Klasse zu übergeben leider kommt immer eine Fehlermeldung, ich hoffe ihr könnt mir weiterhelfen!
Mein Hauptprogramm

Private Sub CommandButton1_Click()
Dim jo As Besucherstatistik
Dim i As Integer
Dim x As Integer
Dim j As Integer
wiederhole1:
x = InputBox("Wieviele Messetage wollen sie erfassen")
If x >= 10 Then
MsgBox ("Es können maximal 10 Besucher erfasst werden")
GoTo wiederhole1
End If
ReDim besucher(1 To x) As Long
For i = LBound(besucher) To UBound(besucher)
wiederhole2:
besucher(i) = InputBox("Wie viel Besucher waren am " & i & ". Tag auf der Messe?")
If besucher(i) >= 20000 Then
MsgBox ("Es können maximal 20000 Besucher erfasst werden")
GoTo wiederhole2
End If
j = j + 1
Set jo = New Besucherstatistik
i = ta.jo
besucher(i) = bes.jo
Set jo = Nothing
Next i
End Sub


Meine Klasse:


Private Tag As Integer
Private besucher As Integer
Public Property Let ta(t As Integer)
Tag = ta
End Property
Public Property Let bes(b As Integer)
besucher = b
End Property


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array in Klasse übergeben
17.05.2009 20:19:05
trumb23
Okay hab oben sogenannte scheiße programmiert!
hab jetzt ein funktionierendes Programm:
Hauptprogramm:

Private Sub CommandButton1_Click()
Dim ges_bes As Integer
Dim i As Integer
Dim x As Integer
Dim j As Integer
wiederhole1:
x = InputBox("Wieviele Messetage wollen sie erfassen")
If x >= 10 Then
MsgBox ("Es können maximal 10 Besucher erfasst werden")
GoTo wiederhole1
End If
ReDim besucher(1 To x) As Long
For i = LBound(besucher) To UBound(besucher)
wiederhole2:
besucher(i) = InputBox("Wie viel Besucher waren am " & i & ". Tag auf der Messe?")
If besucher(i) >= 20000 Then
MsgBox ("Es können maximal 20000 Besucher erfasst werden")
GoTo wiederhole2
End If
jo = j + 1
d = i
Set jo = New Besucherstatistik
jo.ta = i
jo.bes = besucher(i)
ges_bes = ges_bes + jo.gesamtbesucher
Next i
MsgBox "Gsamtbesucherzahl: " & ges_bes
End Sub


Klasse:


Private tag As Integer
Private besucher As Integer
Public Property Let ta(t As Integer)
tag = t
End Property
Public Property Let bes(b As Integer)
besucher = b
End Property
Public Function gesamtbesucher()
gesamtbesucher = besucher
End Function


Jetzt habe ich noche die Frage, geht es auch das ich im nachhinein die Gesamtbesucherzahl auslesen kann?

Anzeige
AW: Array in Klasse übergeben
17.05.2009 23:19:48
Nepumuk
Hallo,
wenn ich dein Programm sehe, dann solltest du dringend die Selbsteinschätzung deines VBA-Levels überdenken.
So etwas ist Mist.
wiederhole1:
x = InputBox("Wieviele Messetage wollen sie erfassen")
If x >= 10 Then
    MsgBox ("Es können maximal 10 Besucher erfasst werden")
    GoTo wiederhole1
End If

Schon mal was von Do-Loop gehört? Was, wenn ich anStelle einer Zahl einen Buchstaben eingeben oder eine Zahl mit Nachkommastelle, was wenn ich auf Abbrechen klicke?
Und was soll das sein? Eine Variable erst als numerische Variable und gleich anschließend als Klassenvariable zu benutzen?
jo = j + 1
d = i
Set jo = New Besucherstatistik

Das zeugt auch nicht gerade vom Verständnis bezüglich Klassenprogrammierung:
Public Function gesamtbesucher()
    gesamtbesucher = besucher
End Function

Eine Methode zu benutzen nur um die Eigenschaft einer Klasse zurückzugeben. Warum benutzt du nicht Property Get?
Deine Klasse mit zwei Eigenschaften macht auch wenig Sinn, die ist nicht besser als zwei Variablen auf Prozedurebene.
Du kannst zwar ein Array an eine Klasse übergeben, aber nur über einen Variant. Normalerweise erzeugt man nicht erst ein Array um es dann an eine Klasse zu übergeben, sondern schreibt direkt in die Klasse. Aber dann sollte auch ein bisschen Intelligenz in der Klasse stecken, wie einfügen von neuen Elementen im Array oder das löschen von Elementen.
Zu guter letzt, solltest du die Benamung deiner Variablen überdenken, einzelne Buchstaben benutze ich maximal um mal schnell etwas zu testen, aber in einem Programm niemals. Du hast pro Namen 255 Zeichen zur Verfügung, nutze das um die Lesbarkeit deines Programms zu erhöhen.
Versteh mich jetzt aber bitte nicht falsch, ich will dir gerne helfen besser zu werden, aber fang erst mal mit den Grundlagen an und nicht mit dem schwierigen.
Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige