Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
928to932
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
928to932
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array in VBA

Array in VBA
03.12.2007 17:56:00
Salim

Hallo zusammen,
mit Hilfe des Forums habe ich folgendes Makro gebastelt der über einen Commandbutton ausgelöst wird:

Sub Projektliste()
Application.ScreenUpdating = False
Worksheets("Dropdowns").Activate
Dim arr
Dim Z As Long
Dim S As Integer
Dim Mydic
Set Mydic = CreateObject("Scripting.dictionary")
arr = Range("A1:q10000")
On Error Resume Next
For Z = 1 To UBound(arr, 1)
For S = 1 To UBound(arr, 2)
If IsNumeric(arr(Z, S)) Then Mydic.Add arr(Z, S), 0
Next
Next
On Error GoTo 0
Range("s1").Resize(Mydic.Count) = WorksheetFunction.Transpose(Mydic.keys)
Columns("s:s").Select
Selection.Sort Key1:=Range("s1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Worksheets("Auswertung").Activate
Application.ScreenUpdating = True
End Sub


In den Spalten a1:q10000 stehen Listen. Jede Spalte enthält die Daten der Spalte A eines Tabellenblattes. Diese Bezüge vergrössern aber meine Datei auf 5 MB und dass möchte ich nicht. Also wollte ich fragen ob jemand eine Idee hätte wie man die gesamte Auswertung im Makro verarbeiten kann. Wie kann ich ein Array, der 17 Spalten A aus verschiedenen Blätter enthält, definieren?
Danke und Gruss
Salim

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array in VBA
03.12.2007 18:51:01
Daniel
Hi
da VBA beim Verarbeiten von Array-Variablen ja ne ganz akzeptable Geschwinidgkeit hinlegt, würde ich die Spalte A jedes Tabellenblatts einzeln in ein einspaltitges Array einlesen und dann die Daten per Schleife ins grosse Array rüberkopieren, also in etwa so:
Sub Test()
Dim arr
Dim teilArr
Dim y As Long, x As Long, AnzSheets As Long, Zeilen As Long
AnzSheets = 4 'Anzahl Tabellenblätter
Zeilen = 6 'Anzahl Zeilen pro Blatt
ReDim arr(1 To Zeilen, 1 To AnzSheets)
For y = 1 To AnzSheets
teilArr = Sheets(y).Range("A1:A10000")
For x = 1 To Zeilen
arr(x, y) = teilArr(x, 1)
Next x
Next y
Erase teilArr
Gruß, Daniel

Anzeige
AW: Array in VBA
04.12.2007 10:58:00
Salim
Hallo Daniel,
Danke für deinen Feedback. Ich verstehe aber nicht wie dein Sub die Tabellenblätter erkennt, auf denen er sich beziehen soll.
Gruss
Salim

AW: Array in VBA
04.12.2007 22:42:00
Daniel
Hi
das Makro verwendet die Tabellenblätter so, wie sie in der Reihenfolge der Blattregister stehen
(also erst das ganz linke, dann das 2. von links, das 3. von links, bis zu der Anzahl die du im Makro bei AnzSheets angegeben hast)
das macht der Index Y in

For y = 1 To AnzSheets
teilArr = Sheets(y).Range("A1:A10000")


Wenn dein erstes Tabellenblatt von links nicht mit ausgewertet werden soll, dann kannst du das dadurch errichen, daß du die Zählervariable um 1 erhöhst


For y = 1 To AnzSheets
teilArr = Sheets(y + 1).Range("A1:A10000")


Sollten die Blätter nicht in der richtigen Reihenfolge stehen (also in der Geleichen Reihenfolge, wie sie im Array angeordnet werden sollen), dann ordnest du sie am besten so an.
Wenn die Reihenfolgen nicht übereinstimmen, wird das Makro schon etwas aufweniger.
Gruß, Daniel

Anzeige
AW: Array in VBA
04.12.2007 23:15:00
Salim
Hallo Daniel,
herzlichen Dank.
Gruss
Salim

AW: Array in VBA ist gelöst
04.12.2007 23:44:31
Daniel
Hi
schön, daß ich helfen konnte und danke für die Rückmeldung.
aber warum stellst du die Frage auf offen, wenn das Problem gelöst ist?
Gruß, Daniel

AW: Array in VBA ist gelöst
05.12.2007 08:30:07
Salim
Hallo Daniel,
sorry, war ein Versehen.
Gruss
Salim

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige