Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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 an anderes Workbook übergeben

Array an anderes Workbook übergeben
21.09.2018 22:41:28
Timo
Hallo,
Ich habe ein Array in Workbook1 eingelesen, dieses würde ich gerne in Workbook2 verwenden. Wie bekomme ich das Array in Workbook2 verfügbar?
Das Array soll eingelesen werden wenn Workbook1 oder Workbook2 geöffnet wird und anschließend in beiden Workbooks verfügbar sein, also am besten über ein Call beim open ereignis, aber ich bekomme es einfach nicht hin....
Das Array heißt in meinem Programm Sammlung
Option Explicit
Public lzSpritzfolge As Long
Public lzSchläge As Long
Public wbSchlageinteilung As Workbook
Public wbSpritzfolge As Object
Public lzPSMliste As Integer
Public lsPSMliste As Integer
Public PSMListe As Object
Public sammlung() As Variant
Sub SpritzFolgeAuslesen()
Set PSMListe = GetObject(ThisWorkbook.Path & "\" & "PSM Liste.xlsm")
Set wbSpritzfolge = ThisWorkbook
Windows("Spritzfolge.xlsm").Visible = True
Set PSMListe = PSMListe.Sheets("PsmListe")
Set wbSchlageinteilung = GetObject(ThisWorkbook.Path & "\" & "Schlageinteilung.xlsm")
'letzte Zeile und letzte Spalte von Listen ermitteln
lzPSMliste = PSMListe.Range("A65536").End(xlUp).Row
lsPSMliste = PSMListe.Range("A5").End(xlToRight).Column
lzSpritzfolge = wbSpritzfolge.ActiveSheet.Range("B65536").End(xlUp).Row
lzSchläge = wbSchlageinteilung.Sheets(ThisWorkbook.ActiveSheet.Name).Range("B65536").End( _
xlUp).Row
Dim Schläge As Range
Dim Schlag As Range
Dim Spritzfolge As Range
Dim Spritzung As Range
Dim gefunden As Integer
Dim Treffer As Range
Dim ErsterTreffer As Range
Dim Meldung As String
Dim x As Integer
Dim m As Integer
'Sammlung(x,0,0) = Schlag
'Sammlung(0, x, 0) = Mittel
'Sammlung(0, x, 1) = MaxAnzahlAnwendungen
'Sammlung(x,x,2) = Anzahl Anwendungen
Set Schläge = wbSchlageinteilung.Sheets(ThisWorkbook.ActiveSheet.Name).Range("B5:B" & lzSchläge) _
_
Set Spritzfolge = wbSpritzfolge.Sheets(ThisWorkbook.ActiveSheet.Name).Range("B3:B" &  _
lzSpritzfolge)
ReDim Preserve sammlung(5 To lzSchläge, lzPSMliste, 3)
'Jeden Schlag in der Schlageinteilung einmal durchgehen
For Each Schlag In Schläge
m = 1
'Schlag in Array einlesen  inkl. angewendetem Mittel und MaxAnwendungen
With PSMListe
For x = 5 To lzPSMliste
If WorksheetFunction.CountIf(.Range("A5:A" & x), .Cells(x, 1)) = 1 Then
'Schlagnamen auf Position 0,0 schreiben
sammlung(Schlag.Row, 0, 0) = Schlag.Value
'Schreibe auf jeden Schlag jedes Mittel auf jeden Schlag auf Position 0
sammlung(Schlag.Row, m, 0) = .Cells(x, 1)
'Schreibe auf die passende Position 1 die MaxAnzahlAnwendungen
sammlung(Schlag.Row, m, 1) = .Cells(x, 5)
m = m + 1
End If
Next
End With
'm ist nach dem Einlesen die Anzahl der Mittel in der PSMListe (ohne Doppeleinträge)
'Leerzeilen im Schlag möglich deswegen --> Wenn der Schlag leer ist überspringen
If Not Schlag Is Nothing Then
'Schlag in der Spritzfolge suchen und die Range in die Variable Treffer schreiben
Set Treffer = Spritzfolge.Find(what:=Schlag.Value)
'Nötig um das Ende der Schleife zu finden
Set ErsterTreffer = Treffer
If Not Treffer Is Nothing Then
Do
'Suche das Mittel im Array
For x = 0 To m
If Treffer.Offset(0, 3).Value = sammlung(Schlag.Row, x, 0) Then Exit  _
For
Debug.Print Treffer.Offset(0, 3)
Debug.Print sammlung(Schlag.Row, x, 0)
Next x
'Position des Arrays darf nicht leer sein da sonst kein Wert dazuaddiert  _
werden kann
If sammlung(Schlag.Row, m, 2) = " " Then sammlung(Schlag.Row, m, 2) = 0
'Addiere auf die Schlag/Mittelkombination auf Platz 2 eine Anwendung (Platz  _
_
1 = MaxAnzahlanwendungen)
sammlung(Schlag.Row, m, 2) = sammlung(Schlag.Row, m, 2) + 1
Set Treffer = Spritzfolge.FindNext(Treffer)
Loop Until Treffer Is Nothing Or Treffer = ErsterTreffer
End If
End If
Next Schlag
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array an anderes Workbook übergeben
22.09.2018 09:29:00
Rob
Dafür gibt es doch Personal.xlsb (persönliche Makroarbeitsmappe) würde ich meinen...
AW: Array an anderes Workbook übergeben
23.09.2018 17:05:27
Timo
Wie kann ich das mit der Personal.xlsb realisieren?
Am liebsten wäre mir wenn ich per Application.Run die Variable direkt zurückgeben lassen könnte...
AW: Array an anderes Workbook übergeben
26.09.2018 21:54:28
Rob
Das geht am einfachsten, wenn Du ein Makro aufzeichnest und anschließend Persönliche Makroarbeitsmappe als Speicherort auswählst. Direkt die Aufzeichnung beenden und dann hast Du im Projektexplorer ein VBAProjekt(Personal.xlsb). Sorry für die späte Antwort aber ich war geschäftlich unterwegs.
Anzeige

36 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige