2-Dimesionales Array übergeben

Blumeheinz

Grünschnabel
Wie kann ich das 2 Dimensionale Array übergeben?


Form1:
'Option Explicit

Private Type t_stein
Farbe As Integer
Mühle As Integer
End Type

Private Sub Command1_Click()
Dim Feld(3, 9) As t_stein
Dim i, n As Integer

For i = 1 To 3
For n = 1 To 9
Feld(i, n).Farbe = n
Feld(i, n).Mühle = 2
Picture1.Print Feld(i, n).Farbe
Picture1.Print Feld(i, n).Mühle
Prüfe()
Next n
Next i
End Sub

Modul
Sub Prüfe()
For i = 1 To 3
If Feld(i, 1).Farbe = F And Feld(i, 2).Farbe = F And Feld(i, 3).Farbe = F Then
Feld(i, 1).Mühle = 1
Feld(i, 1).Mühle = 1
Feld(i, 1).Mühle = 1
Mühle1 = 1
Else: Mühle1 = 0
End Sub
 
Du musst den Typ als Public definieren, damit du auch in einem Modul darauf zugreifen kannst. (Die Typ-Deklaration also ins Modul verschieben):
Code:
Public Type t_stein
Farbe As Integer
Mühle As Integer
End Type
 
Es ist so wie Shakie gesagt hat :

wenn Du den Code von jeder Form/jedem Modul aus aufrufen willst, dann musst Du es als 'Public' deklarieren.

Also

Code:
Public Function ShowMsg(strText As String)

  MsgBox strText

End Function

kannst Du von überall aus in Deinem Programm aufrufen, wenn Du es als 'Private' deklarierst nicht.
 
Code:
'Option Explicit
Public Type t_stein
  Farbe As Integer
  Mühle As Integer
End Type

Private Sub Command1_Click()
Dim Feld(3, 9) As t_stein
Dim i, n As Integer

For i = 1 To 3
    For n = 1 To 9
        Feld(i, n).Farbe = n
        Feld(i, n).Mühle = 2
        Picture1.Print Feld(i, n).Farbe
        Picture1.Print Feld(i, n).Mühle
        Call Prüfe(Feld())
    Next n
Next i

Code:
Public Sub Prüfe(ByRef Feld() As t_stein)
For i = 1 To 3
    If Feld(i, 1).Farbe = F And Feld(i, 2).Farbe = F And Feld(i, 3).Farbe = F Then
        Feld(i, 1).Mühle = 1
        Feld(i, 2).Mühle = 1
        Feld(i, 3).Mühle = 1
    
        Mühle1 = 1
    Else: Mühle1 = 0
    
    If Feld(i, 3).Farbe = F And Feld(i, 4).Farbe = F And Feld(i, 5).Farbe = F Then
        Feld(i, 3).Mühle = 1
        Feld(i, 4).Mühle = 1
        Feld(i, 5).Mühle = 1
    
        Mühle2 = 1
    Else: Mühle2 = 0
    
    If Feld(i, 5).Farbe = F And Feld(i, 6).Farbe = F And Feld(i, 7).Farbe = F Then
        Feld(i, 5).Mühle = 1
        Feld(i, 6).Mühle = 1
        Feld(i, 7).Mühle = 1
    
        Mühle3 = 1
    Else: Mühle3 = 0
    
    If Feld(i, 7).Farbe = F And Feld(i, 8).Farbe = F And Feld(i, 1).Farbe = F Then
        Feld(i, 7).Mühle = 1
        Feld(i, 8).Mühle = 1
        Feld(i, 9).Mühle = 1
    
        Mühle4 = 1
    Else: Mühle4 = 0
End Sub

So ich will eigentlich nur wissen wie man das Feld übergibt, das ich vom Typ t_stein deklariert habe.
 
Die Deklaration von t_stein aus dem Formular-Code raus und in den Modul-Code rein:
Code:
Option Explicit
 
Private Sub Command1_Click()
Dim Feld(3, 9) As t_stein
Dim i, n As Integer
 
For i = 1 To 3
	For n = 1 To 9
		Feld(i, n).Farbe = n
		Feld(i, n).Mühle = 2
		Picture1.Print Feld(i, n).Farbe
		Picture1.Print Feld(i, n).Mühle
		Call Prüfe(Feld())
	Next n
Next i
Code:
Public Type t_stein
Farbe As Integer
Mühle As Integer
End Type
 
Public Sub Prüfe(ByRef Feld() As t_stein)
For i = 1 To 3
	If Feld(i, 1).Farbe = F And Feld(i, 2).Farbe = F And Feld(i, 3).Farbe = F Then
		Feld(i, 1).Mühle = 1
		Feld(i, 2).Mühle = 1
		Feld(i, 3).Mühle = 1
 
		Mühle1 = 1
	Else: Mühle1 = 0
 
	If Feld(i, 3).Farbe = F And Feld(i, 4).Farbe = F And Feld(i, 5).Farbe = F Then
		Feld(i, 3).Mühle = 1
		Feld(i, 4).Mühle = 1
		Feld(i, 5).Mühle = 1
 
		Mühle2 = 1
	Else: Mühle2 = 0
 
	If Feld(i, 5).Farbe = F And Feld(i, 6).Farbe = F And Feld(i, 7).Farbe = F Then
		Feld(i, 5).Mühle = 1
		Feld(i, 6).Mühle = 1
		Feld(i, 7).Mühle = 1
 
		Mühle3 = 1
	Else: Mühle3 = 0
 
	If Feld(i, 7).Farbe = F And Feld(i, 8).Farbe = F And Feld(i, 1).Farbe = F Then
		Feld(i, 7).Mühle = 1
		Feld(i, 8).Mühle = 1
		Feld(i, 9).Mühle = 1
 
		Mühle4 = 1
	Else: Mühle4 = 0
End Sub
 
Zurück