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

Wenn-Abfrage innerhalb einer Schleife einbauen

Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 21:18:12
Korl
Hallo,
ich bins noch einmal.
Im nachfolgenden Code möchte ich noch gerne eine Abfrage einbauen, die mir selber leider noch nicht gelungen ist.
Sub KBZ_zusammenstellen()
   Dim wksQ As Worksheet, wksZ As Worksheet
   Dim lLetzteZ As Long
   
   Set wksQ = ActiveWorkbook.ActiveSheet
   Set wksZ = Workbooks("Einteilung 08.xls").Worksheets("Tabelle1")
   
   Application.ScreenUpdating = False
   For Each wksQ In ActiveWorkbook.Worksheets
      wksQ.Range(wksQ.Cells(2, 1), wksQ.Cells(1, 5).End(xlDown)).Copy
      
      lLetzteZ = IIf(wksZ.Range("A65536") <> "", 65536, wksZ.Range("A65536").End(xlUp).Row)
      wksZ.Range("A" & lLetzteZ + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
      Application.CutCopyMode = False
   Next wksQ
   Application.ScreenUpdating = True
End Sub
Wenn im "WksQ.Range("A2") = leer" dann soll das Tabellenblatt unberücksichtigt bleiben, ansonsten weiter laufen.
Kann mir hierbei noch mal jemand helfen?
Gruß Korl

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 21:23:56
Ramses
Hallo
Schreib die Anwendung so

For Each wksQ In ActiveWorkbook.Worksheets
    If wks.Range("A2") <> "" Then
        wksQ.Range(wksQ.Cells(2, 1), wksQ.Cells(1, 5).End(xlDown)).Copy

        lLetzteZ = IIf(wksZ.Range("A65536") <> "", 65536, wksZ.Range("A65536").End(xlUp).Row)
        wksZ.Range("A" & lLetzteZ + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
    End If
Next wksQ

Gruss Rainer

Anzeige
AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 21:31:05
Korl
Hallo Rainer,
besten Dank für Deine Lösung, ich bin immer andersherum angefangen ( wksQ.Range("A2") = "" Then). :-((
Gruß Korl

AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 22:14:20
Daniel
Hi
was im Prinzip ja nicht falsch ist, nur dann braucht man ne IF THEN ELSE konstruktion:

For each X in Y
IF X.range("A2") = "" then
'hier passiert dann nichts
ELSE
X.Range(....).Copy
'.... und der Rest der Schleife
End IF
Next


Möglich wäre auch ein SELECT-CASE Konstrukt:


For each X in Y
Select Case X.range("A2").value
Case ""
'hier passiert dann nichts
Case else
X.Range(....).Copy
'.... und der Rest der Schleife
End Select
Next


Gruß, Daniel

Anzeige
AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 22:56:00
Ramses
Hallo
?
"...nur dann braucht man ne IF THEN ELSE konstruktion:..."
Wer sagt das ?
Machst du dir eigentlich mal die Mühe die Beiträge vorher zu lesen und allenfalls nachzuvollziehen ?
Gruss Rainer

AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 23:32:00
Daniel
Hi
normalerweise schon.
Dein Vorschlag:

IF wksQ.range("A2")  "" then
Mach was
End if


ist ja auch nur eine verkürzte Form von


IF wksQ.range("A2")  "" then
Mach was
Else
Mach nix
End if


die nur deshalb möglich ist, weil wenn die Bedingung nicht erfüllt ist, nichts passieren soll.
Mein Vorschlag deshalb, weil Korl die Bedingung mit ="" anstelle von ""gestellt hat und ich ihm zeigen wollte, wie man das Problem auch mit diese Bedingung lösen kann:


IF wksQ.range("A2") = "" then
Mach nix
Else
Mach was
End if


ist vom Prinzip her das gleiche, nur andersrum.
Was einem eher liegt, ist wahrscheinlich eine Frage der Denkweise und es Persönlichen Geschmacks
von daher kann ich deinen Einwand nicht ganz nachvollziehen.
die 2. Möglichkeit, wenn man lieber mit =-Bedingungen arbeitet, wäre folgendes:


IF NOT wksQ.range("A2") = "" then
Mach was
End if


Gruß, Daniel

Anzeige
AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 21:26:00
Matthias
Hallo Korl
ungetestet

Sub KBZ_zusammenstellen()
Dim wksQ As Worksheet, wksZ As Worksheet
Dim lLetzteZ As Long
Set wksQ = ActiveWorkbook.ActiveSheet
Set wksZ = Workbooks("Einteilung 08.xls").Worksheets("Tabelle1")
Application.ScreenUpdating = False
For Each wksQ In ActiveWorkbook.Worksheets
 If wksQ.Range("A2") = "" Then GoTo NXT
wksQ.Range(wksQ.Cells(2, 1), wksQ.Cells(1, 5).End(xlDown)).Copy
lLetzteZ = IIf(wksZ.Range("A65536")  "", 65536, wksZ.Range("A65536").End(xlUp).Row)
wksZ.Range("A" & lLetzteZ + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,  _
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
NXT:
Next wksQ
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 21:36:00
Korl
Hallo Matthias L,
auch Dir herzlichen Dank für Deine Mühe.
Deine Variante kommt meiner ersten Idee sehr nahe, kam nur nicht auf "GoTo Nxt" :-((
Gruß Korl

AW: Wenn-Abfrage innerhalb einer Schleife einbauen
04.11.2007 22:18:00
Daniel
Hi
wobei diese Variante nicht zu empfehlen ist.
GOTOs versucht man schon seit 30 Jahren aus der Programmierung zu verbannen (spätestens mit PASCAL)
weil sowas dazu führt, schwer verständlichen "Spaghetti-Code" zu schreiben, und ist eigentlich nur in sehr rudimentären Sprachen notwendig.
Gruß, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige