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

FOR -IF nicht korrekt

FOR -IF nicht korrekt
22.02.2004 13:21:52
Klaus
Hallo !!!
Ich habe folgendes Problem:
Mein Makro soll die Daten in der Liste in der Spalte A nach Abkürzungen(Buchstaben und Zahlen) sortieren und ein neues Tabellenblatt mit dem jeweiligen Abkürzungen-Namen erstellen.
Um keine doppelten Tabellen zu erhalten soll er vorher prüfen, ob das Blatt
schon existiert. Allerdings funktioniert das Makro nicht richtig - es erstellt
trotzdem manchmal doppelte Blätter.
Beim durchlaufen der Schleife FOR (I) liest er zwar den richtigen Tabellennamen
aus. Aber führt die IF_Bedingung dann nicht aus.
Wäre sehr dankbar für eine Lösung oder Hinweis.

Sub Sortieren()
Dim X As String
Dim VG As String
' Anfang
Set ANFANG = ActiveCell
Sheets("Liste").Select
VG = Range(ANFANG.Offset(4, 0), ANFANG.Offset(4, 0)).Value
X = Range(ANFANG.Offset(3, 0), ANFANG.Offset(3, 0)).Value
B = 1
Range(ANFANG.Offset(3, 0), ANFANG.Offset(3, 0)).Select
z = ActiveCell.Row()
letztezeile = Sheets("Liste").UsedRange.SpecialCells(xlCellTypeLastCell).Row
MsgBox letztezeile
R = letztezeile - 2
MsgBox R
' Zeilenschleife
For z = 4 To R
If X <> VG Then
' Arbeitsblattschleife
I = 0
For I = 1 To Worksheets.Count
MsgBox Worksheets(I).Name
If Worksheets(I).Name = X Then GoTo 100
Next I
Sheets("Liste").Select
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(X).Delete
Columns("A:A").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=X
Range("B3").CurrentRegion.Copy
Sheets.Add.Name = X
Sheets(X).Move After:=Sheets(4 + B)
B = B + 1
Cells.Select
ActiveSheet.Paste
With Selection.Font
.Name = "Arial"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
End With
Application.CutCopyMode = False
Range("A1").CurrentRegion.Select
Selection.RowHeight = 16
Columns("B:C").Select
Range("B3").Activate
Selection.ColumnWidth = 9
Range("C12").Select
Sheets("Liste").Activate
ActiveSheet.AutoFilterMode = False
100         Sheets("Liste").Select
End If
X = VG
VG = Range("a" & z + 1).Value
Next z
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
For .. Next und Delete
22.02.2004 13:34:23
ChrisL
Hi Klaus
Lass die For...Next Schlaufe rückwärts laufen...
For z = R To 4 Step -1
Gruss
Chris
AW: For .. Next und Delete
22.02.2004 13:38:46
Klaus
Hallo !
Danke für deine schnelle Antwort.
Hab's gerade probiert erstellt trotzdem teilweise doppelte Tabellen.
AW: For .. Next und Delete
22.02.2004 15:03:23
ChrisL
Hi Klaus
Dann lade mal eine Beispieldatei hoch und gib eine Erklärung zum Programmablauf.
Gruss
Chris
AW: For .. Tabelle
22.02.2004 16:54:21
Klaus
Hallo Chris
Beispieldatei unter:
https://www.herber.de/bbs/user/3870.xls
Wie gesagt das Makro soll Spalte A prüfen, dann Filtern und Tabelle mit dem
jeweiligen Namen erstellen. Und keine doppelten Tabellen erstellen.
Theoretisch kann man die doppelten Blätter bestimmt nachher auch löschen,
aber mich würde schon interessieren, wo der Fehler liegt.
Könnte es vielleicht mit einem verdeckten Formatfehler zusammenhängen?
Mit formatieren schon probiert.
Vielleicht hast du ja ne Idee.
aktuelles Makro:

Sub Sortieren()
Dim VG As String
Dim X As String
' Anfang
Set ANFANG = ActiveCell
Sheets("Liste").Select
VG = Range(ANFANG.Offset(4, 0), ANFANG.Offset(4, 0)).Value
X = Range(ANFANG.Offset(3, 0), ANFANG.Offset(3, 0)).Value
B = 1
Range(ANFANG.Offset(3, 0), ANFANG.Offset(3, 0)).Select
z = ActiveCell.Row()
letztezeile = Sheets("Liste").UsedRange.SpecialCells(xlCellTypeLastCell).Row
MsgBox letztezeile
R = letztezeile - 2
MsgBox R
' Zeilenschleife
For z = 4 To R
If X <> VG Then
' Arbeitsblattschleife
I = 1
For I = 1 To Worksheets.Count
If Worksheets(I).Name = X Then GoTo 100
Next I
Sheets("Liste").Select
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(X).Delete
Columns("A:A").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=X
Range("B3").CurrentRegion.Copy
Sheets.Add.Name = X
Sheets(X).Move After:=Sheets(1 + B)
B = B + 1
Cells.Select
ActiveSheet.Paste
With Selection.Font
.Name = "Arial"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
End With
Application.CutCopyMode = False
Range("A1").CurrentRegion.Select
Selection.RowHeight = 16
Columns("B:C").Select
Range("B3").Activate
Selection.ColumnWidth = 9
Range("C12").Select
Sheets("Liste").Activate
ActiveSheet.AutoFilterMode = False
100         Sheets("Liste").Select
End If
X = VG
VG = Range("a" & z + 1).Value
Next z
End Sub

Viel Spass und Danke
Gruss Klaus
Anzeige
AW: For .. Tabelle
22.02.2004 17:47:43
NE
Abend Klaus,
wenn Du Sheet 'SA' meinst ..., da haste in irgendeiner Zelle mal ein 'SA '
stehen, also mit Leerzeichen ;-)
BTW, der Code wäre arg verbesserungswürdig, werd' bloss noch nicht so
recht schlau draus, was Du außer dem Sheet.add so tust ;-)
Auf 'activate' & 'select' kannste gut & gerne meistens verzichten ...
lg Nancy
AW: For .. Tabelle
22.02.2004 18:16:05
Klaus
Hallo Nancy !
Ich danke dir für die schnelle Lösung.
Verbesserungen sind bestimmt noch möglich.
Bin noch nicht so VBA erfahren.

Gruss Klaus
thx, hoffentlich
22.02.2004 18:46:46
NE
... war's das auch only :-)
Danke für die Antwort ...
BTW, die 'Gefahrenquelle-Leerzeichen' vielleicht irgendwie noch mit
'GLÄTTEN' oder was andrem ausknipsen ;-)
lg Nancy
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige