Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1388to1392
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 mit If-Anweisung

Array mit If-Anweisung
29.10.2014 10:23:53
Moritz
Hallo alle zusammen,
ich beschäftige mich seit ein paar Tagen mit VBA. Ich habe momentan eine Arbeitsmappe die ich dafür gebrauche um eine Liste auszulesen und bestimmte daten dann immer wieder neu erstellten Worksheets zuzuweisen.
als erstes habe ich es ganz statisch nur mit einem worksheet versucht und es hat auch alles geklappt. Nun habe ich das Problem, dass ich über einen Butten ein die neuen Worksheets erstelle und können immer wieder neue kommen und gelöscht werden.
Ich speichere in einem Globalen Array die Namen der Worksheets ab und will dann dieses Array mit den Inhalten einer Spalte vergleichen. Wenn diese übereinstimmen werden die Daten der Zeile in das Worksheet übernommen.
Im ersten Teil des Programms wurde es fest zugewiesen. Im zweiten habe ich es mit einem Array versucht aber habe es leider nicht geschafft. Er beschwert sich immer bei "With ActiveWorkbook.Worksheets(Personal(w))".
Sub test()
Dim Name As Variant
Dim x As Integer
Dim z As String
Dim w As Integer
While x 

Es kann sein, dass der Code etwas umständlich ist, aber wie gesagt ich bin ein blutiger Anfänger. Ich freue mich über Vorschläge.

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

Betreff
Datum
Anwender
Anzeige
AW: Array mit If-Anweisung
29.10.2014 12:05:26
Jack_d
Hallo Moritz
ist ja auch sinnvoll das er bei der Zeile
"With ActiveWorkbook.Worksheets(Personal(w))"

Rumeckert.
Denn er braucht ja die referenz auf das Worksheet. in deinem Fall wäre das das Worksheet W=1-100
Sínnvoll wäre wenn du das folgendermaßen formulierst
For WSSeite=1 to ws.count
for WSSpalte = 1 to 100
With ActiveWorkbook.Sheets("Tabelle" & WSSeite)
next WSSpalte
next WSSeite
Mehr dann gern mit einer Mustermappe
Grüße

AW: Array mit If-Anweisung
29.10.2014 16:33:15
Moritz
War ein guter Ansatzpunkt des ganze zu ändern und jetzt läuft es :) Die Lösung des Problems war eine IF-Anweisung, die leere Zellen in der Tabelle überspringt. Der Code schaut derzeit folgendermaßen aus:
Private Sub test()
Dim WS_Count As Integer
Dim q As Integer
Dim WSSeite As Integer
Dim WSSpalte As Integer
Dim Name As String
Dim Personal(100) As String
Dim Mitarbeiter As String
WS_Count = ActiveWorkbook.Worksheets.Count
'Array mit den Mitarbeiternamen anlegen
For q = 1 To WS_Count
Personal(q) = Worksheets(q).Range("I1")
Next q
'Mit For-Schleife alle Mitarbeiter durchgehen
For WSSeite = 1 To WS_Count
Mitarbeiter = Personal(WSSeite)
'Spalten mit For-Schleife durchlaufen und Zeilen setzen
For WSSpalte = 1 To 30
Name = Cells(3, 4).Offset(WSSpalte, 0)
Set PA = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(WSSpalte, -3)
Set Kunde = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(WSSpalte, -2)
Set Menge = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(WSSpalte, -1)
Set Start = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(WSSpalte, 1)
Set Planung = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(WSSpalte, 2)
If Name  "" Then
'Vergleich der Spalte mit den Mitarbeitern aus Array
If Name = Mitarbeiter Then
With ActiveWorkbook.Sheets(Mitarbeiter)
.Cells(.Cells(.Rows.Count, 3).End(xlUp).Row + 1, 2) = PA
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 3) = Kunde
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 4) = Menge
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 5) = Start
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 6) = Planung
End With
End If
End If
Next WSSpalte
Next WSSeite
End Sub

Anzeige
Super.
30.10.2014 14:48:12
Jack_d
Freut mich wenn man geholfen werden kann.
Und vielen Dank für die Rückmeldung!
Grüße

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige