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

if, then, else

if, then, else
20.07.2016 08:29:34
Michel
Hallo zusammen
Ich hab wiedermal ein kleines Problem und zwar bräuchte ich die if, then, else - Formel wie folgt:
Sub test()
' test Makro
Range("b1").Select
ActiveCell.Offset(2, 0).Activate
Range(Selection, Selection.End(xlDown)).Select
hier die fehlende Formel(wenn der markierte Bereich = Wert 0 hat, mache nichts, sonst  _
kopiere nach c3  
Application.CutCopyMode = False
Selection.Copy
Range("c3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

Vielen Dank schon mal für eure Hilfe.
Gruss Sigi

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: if, then, else
20.07.2016 09:03:47
Michael
Hallo!
Sub test()
Dim Ws As Worksheet
Dim r As Range
Set Ws = ActiveSheet
With Ws
Set r = .Range("B3")
r.Resize(.Cells(.Rows.Count, 2).End(xlUp).Row - 2, 1).Select
If WorksheetFunction.Sum(r) > 0 Then
r.Copy
.Range("C3").PasteSpecial xlPasteValues
End If
End With
Application.CutCopyMode = False
End Sub
LG
Michael
Sorry, da war ein Fehler drin, so
20.07.2016 09:10:11
Michael
Hallo,
... muss es lauten (war grade verwirrt):
Sub test()
Dim Ws As Worksheet
Dim r As Range
Set Ws = ActiveSheet
With Ws
Set r = .Range("B3").Resize(.Cells(.Rows.Count, 2).End(xlUp).Row - 2, 1)
If WorksheetFunction.Sum(r) > 0 Then
r.Copy
.Range("C3").PasteSpecial xlPasteValues
End If
End With
Application.CutCopyMode = False
End Sub
LG
Michael
Anzeige
AW: if, then, else
20.07.2016 09:13:50
Michel
Hallo Michael
Danke für deine Hilfe, allerdings zeigt mir das Makro immer noch einen Fehler (Laufzeitfehler 1004)in der Zeile
Set r = .Range("B3").Resize(.Cells(.Rows.Count, 2).End(xlUp).Row - 2, 1)
an.
Gruss Sigi
Sind in Spalte B Werte enthalten?
20.07.2016 09:18:12
Michael
Hallo Sigi!
Mein Code, so ich Dein Ziel aus Deinem Code verstanden habe, legt einen Bereich ausgehend von B3 bis zur letzten gefüllten Zelle in B (auf dem aktiven Blatt) fest, prüft dann die Summe und kopiert entsprechend nach C3.
Sofern in Spalte B auch Werte enthalten sind, funktioniert das...
LG
Michael
Mit Prüfbedingung evtl. so...
20.07.2016 09:24:47
Michael
Hallo Sigi,
...möglich - hier läuft die Geschichte nur, wenn in Spalte B Werte mindestens bis Zeile 3 stehen:
Sub test()
Dim Ws As Worksheet
Dim r As Range
Set Ws = ActiveSheet
With Ws
If WorksheetFunction.CountA(.Columns(2)) > 0 And _
.Cells(.Rows.Count, 2).End(xlUp).Row > 2 Then
Set r = .Range("B3").Resize(.Cells(.Rows.Count, 2).End(xlUp).Row - 2, 1)
If WorksheetFunction.Sum(r) > 0 Then
r.Copy
.Range("C3").PasteSpecial xlPasteValues
End If
End If
End With
Application.CutCopyMode = False
End Sub
LG
Michael
Anzeige
AW: if, then, else
20.07.2016 09:42:54
baschti007
Oder so
Gruß Basti
Sub test()
Dim zelle As Range
Set zelle = ActiveSheet.Range("B1")
If Not zelle.Value = 0 Then
Range(zelle.Offset(2, 0), zelle.Offset(2, 0).End(xlDown)).Copy zelle.Offset(2, 1)
End If
Application.CutCopyMode = False
End Sub

AW: if, then, else
20.07.2016 10:36:58
Michel
Danke für die Hilfe.
Ich muss wohl etwas umfassender zeigen, was ich möchte:
Ich habe in einem Register Daten in verschiedenen Kolonnen. Ich filtere die Kolonnen. Anschliessend möchte ich die gefilterten Daten in ein anderes Register kopieren. Falls aber nach dem filtern keine Daten vorhanden sind, dann möchte ich nichts kopieren.
Hier mal was ich bis jetzt habe, das Problem besteht darin, dass wenn keine Daten vorhanden sind, kopiert er die ganzen leeren Zellen bis ans Registerende in das andere Register und überschreibt damit weiter unten stehende Informationen des Zielregisters:
  • Sub test()
    ' test Makro
    ' aktuelles Blatt merken
    Dim strStartBlatt As String
    strStartBlatt = ActiveSheet.Name
    'löschen von alten Daten
    Range("b23:b39").Select
    Selection.ClearContents
    Range("e23:e39").Select
    Selection.ClearContents
    ' Filter setzten
    Sheets("SAP BK_e").Select
    Range("A2:G2").Select
    Selection.AutoFilter
    Range("b2").Select
    ' zurück zum vorherigen Register
    ActiveWorkbook.Worksheets(strStartBlatt).Activate
    ' Auslesen der Filtervariable
    Dim DeineVariable As String
    DeineVariable = Range("C4")
    Sheets("SAP BK_e").Select
    ActiveSheet.Range("$A$2:$G$16000").AutoFilter Field:=2, Criteria1:=DeineVariable
    ' zweiter Filter
    ActiveSheet.Range("$A$2:$G$16000").AutoFilter Field:=7, Criteria1:="0", _
    Operator:=xlAnd
    'Kopierrange auswählen und kopieren
    Range("D1").Select
    ActiveCell.Offset(2, 0).Activate
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    ' zurück zum vorherigen Register und einfügen
    ActiveWorkbook.Worksheets(strStartBlatt).Activate
    Range("B23").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    ' zurück und den zweiten Kopierrange auswählen und kopieren
    Sheets("SAP BK_e").Select
    Range("G1").Select
    ActiveCell.Offset(2, 0).Activate
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    ' zurück zum vorherigen Register und einfügen
    ActiveWorkbook.Worksheets(strStartBlatt).Activate
    Range("E23").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("SAP BK_e").Select
    ActiveSheet.Range("$A$2:$g$16000").AutoFilter Field:=7
    ActiveSheet.Range("$A$2:$g$16000").AutoFilter Field:=2
    Range("A1").Select
    ' zurück zum vorherigen Register
    ActiveWorkbook.Worksheets(strStartBlatt).Activate
    Range("C4").Select
    End Sub
    

  • Anzeige
    Ohne Beispielmappe...
    20.07.2016 10:51:38
    Michael
    Hallo Sigi,
    ...halte ich mich hier raus. Das ist etwas GANZ anderes, als Du ursprünglich angefragt hast - ich wünsche mir da schon eine kleine Testumgebung (=Bsp-Mappe) Deinerseits.
    LG
    Michael
    AW: if, then, else
    20.07.2016 11:02:35
    Michel
    Hallo Michael
    Die Problematik besteht eigentlich nur darin, dass ich nur dann etwas kopieren möchte, wenn auch nach dem filtern Werte vorhanden sind. Dies versuche ich mit einer Prüfformel wie mit if, then, else....
    Der Rest von diesem Makro funktioniert wunderbar.
    Danke und Gruss
    Sigi
    AW: if, then, else
    20.07.2016 11:20:04
    Werner
    Hallo Michel (Sigi?),
    ob nach dem Filtern Daten vorhanden sind kannst du so prüfen:
    With Sheet("Tabelle1").AutoFilter.Range 'Blatt anpassen
    If .Rows.Count > 1 Then
    'Daten kopieren
    End If
    End With
    
    Wobei hier davon ausgegangen wird, dass, auch wenn der Filter kein Ergebnis liefert, zumindest immer die Überschriftenzeile als Ergebnis vorhanden ist, deshalb >1.
    Gruß Werner
    Anzeige
    AW: if, then, else
    20.07.2016 14:05:41
    Michel
    Hallo Werner
    Danke für dein Input, allerdings gibts einen Laufzeitfehler in der Zeile:
    With Sheet("Tabelle1").AutoFilter.Range
    Ich habe den Tabellenname angepasst, an dem kann es nicht liegen.
    Gruss Sigi
    AW: if, then, else
    20.07.2016 14:12:16
    Michel
    Sorry übrigens der Laufzeitenfehler lautet
    Index ausserhalb des gültigen Bereichs
    AW: if, then, else
    20.07.2016 14:13:26
    Michel
    -
    AW: if, then, else
    20.07.2016 14:14:05
    Michel
    AW: if, then, else
    20.07.2016 14:26:45
    Werner
    Hallo Michel,
    hier ist mir ein s verloren gegangen.
    Sheets("Tabelle1")......
    Gruß Werner
    AW: if, then, else
    20.07.2016 14:28:12
    Michel
    Hallo Werner
    Das hab ich auch probiert, trotzdem kommt die Fehlermeldung.
    Gruss Sigi
    AW: if, then, else
    20.07.2016 15:59:05
    Michel
    Hallo zusammen
    Ich habs mit folgendem Befehl geschafft:
     If ActiveSheet.Autofilter.Range.Columns(1).Specialcells(xlcelltypevisible).Cells.count > 1  _
    then
    'kopieren usw.
    End If
    

    Danke für die Hilfe und Gruss
    Sigi
    Anzeige

    299 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige