captainchaos666
Goto Top

Dateiname an Modul übergeben und ein Array mit dem Inhalt der Datei als Array zurück bekommen

Hallo an Alle,
ich lese in einem Excel- Modul die komplette Excel- Datei ein ein Array aTest(Zeile, Spalte) ein. Das habe ich noch hinbekommen. So nun zu meinem Problem. Das Modul möchte ich aus "DieseArbeitsmappe" starten. Wie kann ich das Array aus dem Modul an die übergeordnete Programmstruktur übergeben.

Dank Euch

Gruß Alex

Content-ID: 134207

Url: https://administrator.de/contentid/134207

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

76109
76109 24.01.2010 um 13:19:51 Uhr
Goto Top
Hallo captainchaos666!

Wenn ich Dich richtig verstanden habe, dann in etwa so:
Sub Test()
    Dim aTest As Variant, bTest As Variant
    
    aTest = Array(0, 1, 2, 4)
    
    Call ChangeArray(aTest)		'Bestehendes Array aTest direkt ändern  
    
    bTest = GetNewArray(aTest)     	'Neues Array geändert zurückgeben  
End Sub

Sub ChangeArray(ByRef aTest)

    aTest(1) = 100  'Array vom Aufrufer direkt ändern  
End Sub

Function GetNewArray(ByVal Test As Variant) As Variant
    
    Test(1) = 200
  
    GetNewArray = Test   'Array vom Aufrufer geändert als neues Array zurückgeben  
End Function

Gruß Dieter

[edit] Wenn ich das richtig sehe, dann wurde die Überschrift nachträglich geändert? [/edit]
captainchaos666
captainchaos666 24.01.2010 um 15:49:10 Uhr
Goto Top
Hallo Dieter,
Danke für deine Schnelle Antwort. Dachte es mir ungefähr so:

Sub Basis()

' Aufruf unterprogramm mit dem Name des Excelprogramms
Array = GetArrayFromExcel(Testdatei.xls)

End Sub


Das Unterprogramm möchte ich bei den Modulen unterbringen. Wie muss ich meine Aufrufe gestalten, damit ich das Unterprogramm bei den Modulen auslagern kann. Funktioniert es wenn ich Array in verschiedenen Größen zurück bekomme

Dank, Gruß Alex
76109
76109 24.01.2010 um 17:49:15 Uhr
Goto Top
Hallo captainchaos666!

Exeldateien in Arrays ver/bearbeiten? Kann ich leider nicht ganz folgen?

Du kannst, wie in meinem Beispiel, die Sub ChangeArray und die Function GetArray unverändert in ein Modul verschieben.
Sub's und Functionen in Modulen sind "Public" und können aus anderen Modulen, Arbeitsmappe, Tabellen oder Formularen heraus ganz normal aufgerufen werden. Erst wenn vor einer Sub oder Function ein "Private" steht, dann kann diese Prozedur nur lokal innerhalb der aktuellen Code-Seite aufgerufen werden.

Beispiel Modul1 (Public):
Sub Irgendwas(....)
...
End Sub
Kann von überall her aufgerufen werden

Beispiel Modul1 (Lokal):
Private Sub WasAnderes(....)
...
End Sub
Kann nur innerhalb von Modul1 aufgerufen werden.

Die Größe eines Arrays wird allein durch die entsprechend initialisierte Array-Variable bestimmt. Ob das Array allerdings korrekt von Deiner Modul-Routine verarbeitet wird, hängt allein von Deinem Code ab.

Gruß Dieter