Excel VBA --- globaleTypendeklarationen

Hallo

Als alter Delphianer (nach Lebensjahren) will ich in VBA unter

VBAProject(MyProject)
MicroSoft Excel Objekte
Tabelle1(MyTabelle)

einen Variablentyp deklarieren.

Type TAK
AK(17,7) as single
End Type

Dim xxx as …


Private Sub Button1_Click()

Bei Datei/Schließen und zurück zu Excel
kommt folgende Fehlermeldung:
„Ein öffentlicher benutzerdefinierter Typ kann nicht innerhalb eines Objektmoduls definiert werden.“

Wo kann ich denn Typen deklarieren?

Was ich eigentlich wollte:

Eigentlich wollte ich globale Variablen deklarieren, um sie ursprünglich in Unterprogrammen mit zu verwenden, ohne diese in Parameterlisten der Funktionen mit übergeben zu müssen

sollte so aussehen

Rem Globale Deklarationen
Dim i,j as Integer
Dim A,B as single
Dim AKW(17,7) as Integer

Rem Unterprogramm welches Variable AKW verwendet
function AK(k, l as integer) as single
AK=(AKW(k,l)+AKW(k+1,l)+AKW(k,l+1)+AKW(k+1,l+1))/4 (x)
End Function

Private Sub Button1_Click()
Dim i,j as Integer

For i := 1 to 17
For j = 1 to 7
AKW(i,j)= Sheets(„MyTabelle“).Cells(7+i,8+j).Value
Next j
Next i
Rem Hier wird das Unterprogramm mit der globalen Variablen verwendet
B = AK(3,4)
Sheets(„MyTabelle“).Cells(1,1).Value = B

End Sub

Und genau dabei kommt ein Syntaxfehler in der mit (x) bezeichneten Zeile. Deshalb der Wunsch nach globalen Typen zwecks Variablenübergabe in Function-Parameterliste

Wie geht das?

Viele Dank
E. B.

Hallo

Als alter Delphianer (nach Lebensjahren) will ich in VBA unter

VBAProject(MyProject)
MicroSoft Excel Objekte
Tabelle1(MyTabelle)

einen Variablentyp deklarieren.

Type TAK
AK(17,7) as single
End Type

Dim xxx as …


Private Sub Button1_Click()

Bei Datei/Schließen und zurück zu Excel
kommt folgende Fehlermeldung:
„Ein öffentlicher benutzerdefinierter Typ kann nicht innerhalb
eines Objektmoduls definiert werden.“

Wo kann ich denn Typen deklarieren?

Füge deinem Projekt mal eine Modul-Datei hinzu, da könnte es funktionieren!

Gruß,
AlexR

Hallo AlexR

Ich habe eine ModulDatei geschrieben und dort hinein die Funktion AK(i,j) verschoben sowie die Deklaration der Variable AKW(17,7) as single.

Nun kennt das Objekt Modul die Variable AKW nicht mehr

What to do?

Danke

E. B.

Hi Ecco,

probiers mal so (In Modul1):

Option Explicit
Option Base 1
Public AKW(17, 7)

Sub test()
Dim n As Integer, nn As Integer
For n = 1 To 17
 For nn = 1 To 7
 AKW(n, nn) = n \* nn
 Next nn
Next n
Cells(1, 1) = AK(3, 5)
End Sub

Function AK(k, l As Integer) As Single
AK = (AKW(k, l) + AKW(k + 1, l) + AKW(k, l + 1) + AKW(k + 1, l + 1)) / 4
End Function

Gruß
Reinhard