Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
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

Range möglich ?

Range möglich ?
14.09.2015 15:11:47
Dirk
Hallo euch allen,
folgenden Codeschnipsel habe ich hier aus dem Archiv:
If Cells(Target.Row, "M") = "" And Cells(Target.Row, "N") = "" And _
Cells(Target.Row, "O") = "" And Cells(Target.Row, "P") = "" And _
Cells(Target.Row, "Q") = "" And Cells(Target.Row, "R") = "" And _
Cells(Target.Row, "S") = "" Then GoTo SPRUNG1
Meine Versuche, diese Anweisung mittels Bereichsangabe
- z.B.: Cells(Target.Range("M:S")="" Then... -
abzukürzen, scheitern leider kläglich an der richtigen Schreibweise.
Wie muß dieser Ausdruck lauten, wenn ich folgende Spalten in der jeweils aktuellen Zeile betrachten möchte:
M bis S, U, W, AA:AC
Ich bin für jede Hilfe dankbar.
MfG
Dirk

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nein, Range nicht möglich für Vergleiche...
14.09.2015 15:38:34
EtoPHG
Hallo Dirk,
Den Ausdruck "...wenn ich folgende Spalten in der jeweils aktuellen Zeile betrachten möchte
kann ich nicht interpretieren!
Grundsätzlich kannst du keine Vergleiche einer Range (mit mehreren Zellen) mit konstanten Werten (auch nicht mit "") vergleichen! Du könntest aber gegen die Anzahl Werte in einer Range vergleichen, z.B. so:
    If WorksheetFunction.CountA(Range(Cells(Target.Row, 13), Cells(Target.Row, 19))) = 0 And _
WorksheetFunction.CountA(Cells(Target.Row, 21)) = 0 And _
WorksheetFunction.CountA(Cells(Target.Row, 23)) = 0 And _
WorksheetFunction.CountA(Range(Cells(Target.Row, 27), Cells(Target.Row, 29))) = 0 Then
MsgBox "Alles leer!"
Else
MsgBox "Irgendwas drin"
End If
Gruess Hansueli

Anzeige
AW: Nein, Range nicht möglich für Vergleiche...
14.09.2015 16:25:34
Dirk
Hallo Hansueli,
du hast meine Fragestellung genau richtig interpretiert und deine Variante funktioniert bestens.
War schlecht von mir formuliert, bitte entschuldige.
Vielen Dank auch für deine Erklärungen.
Die einzelnen Zellen in dem Bereich (M bis S, U, W, AA:AC) enthalten entweder ein "x" oder sind leer.
Ein Sonderfall kann sein, daß alle Zellen leer sind - dafür nutze ich diesen Teil des Codes.
Und da ich schreibfaul bin, dachte ich, es gäbe eine kürzere Schreibweise.
Vllt. in der Art: If IsEmpty Range...
Doch anscheinend war ich da mal wieder auf dem Holzweg (?)...
MfG
Dirk

Anzeige
Kürzer per UDF
14.09.2015 18:05:53
RPP63
Hallo!
Teste mal:
Sub Proof()
Dim AZ As Long
AZ = ActiveCell.Row
If IstLeer(Union(Range(Cells(AZ, 13), Cells(AZ, 19)), Cells(AZ, 21), _
   Cells(AZ, 23), Range(Cells(AZ, 27), Cells(AZ, 29)))) = 12 Then
   MsgBox "Alle leer"
End If
End Sub

Function IstLeer(rng As Range)
Dim Counter As Range
For Each Counter In rng
   If IsEmpty(rng(Counter)) Then IstLeer = IstLeer + 1
Next
End Function
Gruß Ralf

Anzeige
Oder noch kürzer per Intersect...
15.09.2015 09:59:12
EtoPHG
Hallo Ralf,
    If WorksheetFunction.CountA(Intersect(Range("M:S,U:U,W:W,AA:AC"), _
Rows(ActiveCell.Row))) = 0 Then
MsgBox "Nix"
Else
MsgBox "Something"
End If
Gruess Hansueli

gelöst...
16.09.2015 18:10:32
Dirk
Hallo Hansueli,
genau danach suchte ich.
Auch Ralf's Variante funktioniert.
Euch beiden vielen Dank.
MfG
Dirk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige