Was bedeutet der Code zu Deutsch und im einzelnen

Hallo Reinhard,

zuerst einmal „Willkommen zurück“. Es freut mich dass es dir wieder besser geht.

Sollte ich mein Projekt tatsächlich beenden,dann nur alleine wegen meinem mangelndem Wissen und Verständnis für VBA.Auf der anderen Seite gönne ich es aber Excel nicht,mich in die Flucht geschlagen zu haben :wink:

Ich bin furchtbar stolz,dass „mein“ Projekt,auch wenn es eigentlich auf deinem Mist gewachsen ist,doch schon so gut funktioniert. Nur ärgert es mich dermassen,dass ich meinen Teil nicht dazu beitragen kann. Ich habe im Moment Zeit und sitze quasi von Morgens bis Abends an diesem Code,und versuche ihn zu verstehen.

ich vermute einfach mal,das meine Denkweise verkehrt ist und ich immer noch den Merksatz von Basic im Kopf habe… If…Then…Else >Scheint die Sonne,dann gehen wir schwimmen,ansonsten bleiben wir Zuhause.

Ich benutze zum Erlernen von VBA das Buch…VBA mit Excel 2000 von Patrizia S. Prudenzi. Auch wenn ich selbst die 2003er Version auf dem PC nutze,sollte ich damit zunächst zurecht kommen.

Wenn du oder ein anderer von den Excel Experten neben mir sitzen würden,würde ich die Materie auch noch besser und schneller Verstehen.Ausserdem bin ich mit meinen 48 Jahren auch nicht mehr der Jüngste,was das Lernen anbelangt.

Wie schon im anderen Posting erwähnt,ist der Code für mich unstrukturiert. Dass das ein oder andere noch im nachhinein kam,daran habe ich nicht gedacht.

Nachdem man mir erklärt hat,was es mit der Public Function qsum und der Public Sub step4() auf sich hat,suche ich seit 2 Tagen den entsprechenden Code für QS-Solo. Auch der Tip von Andreas mit der F8 Taste,bringt mich irgendwie durcheinander.

Kann es sein,dass das vielleicht für den Anfang zuviele Info´s sind und ich zuviel auf einmal möchte. So wie heute.Arbeite den Code mit F8 Zeile für Zeile ab und bin der Meinung diesen Code könnte man sich schenken,weil die Bezeichnungen im Bereich A1:smiley:O9 ruhig stehen bleiben können. Dann denk ich aber wieder,du als Könner wirst diesen Code nicht ohne Grund geschrieben haben.Dann möchte ich sowas gar nicht erst fragen,um nicht den Eindruck zu erwecken,dein Können da irgendwie anzuzweifeln.

So,das solls erstmal gewesen sein

LG Frank

Hallo wieder, Frank,

Guten Morgen allerseits,

meine Fragen beziehen sich nun auf folgende Codes aus meiner
Datei:

Sub Erstellen()
Dim Spa As Long, N As Integer
Application.ScreenUpdating = False
With Worksheets(„Tabbi“)
With .Range(„A1:smiley:O9“)
.ClearContents
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
.Font.Bold = True
End With
For Spa = 6 To 104 Step 7
.Cells(3, Spa + 1).Value = „Tisch“
.Cells(3, Spa + 1).Font.Bold = True
.Cells(7, Spa + 1).Value = „QS“
.Cells(7, Spa + 1).Font.Bold = True
.Cells(7, Spa + 5).Value = „Durch“
.Cells(7, Spa + 5).Font.Bold = True
.Cells(8, Spa + 1).Value = 0
.Cells(8, Spa + 5).Value = 0
With .Cells(2, Spa + 1)
.MergeCells = False
For N = 7 To 10
With .Borders(N)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 10
End With
Next N
End With
With .Cells(2, Spa + 5)
For N = 7 To 10
With .Borders(N)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 45
End With
Next N
End With
With .Cells(8, Spa + 1)
For N = 7 To 10
With .Borders(N)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
Next N
End With
With .Cells(8, Spa + 5)
For N = 7 To 10
With .Borders(N)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 5
End With
Next N
End With
.Cells(2, Spa + 1).Font.Bold = True
.Cells(2, Spa + 5).Value = 0
.Cells(2, Spa + 5).Font.Bold = True
.Cells(3, Spa + 5).Value = „Bonus“
.Cells(3, Spa + 5).Font.Bold = True
Next Spa
End With
Application.ScreenUpdating = True

Eine Anmerkung vorweg: Wenn du hier Code postest, benutze doch bitte Einrückungen und den „pre“-Tag. Dann wird der Code genau so dargestellt, wie er auch im VBA-Editor steht und ist wesentlich leichter lesbar.

Nachdem ich nun jede Zeile nach und nach mit F8 abgearbeitet
habe ist mir aufgefallen,dass zuerst der Bereich gelöscht
wird(With .Range(„A1:smiley:O9“)
.ClearContents)und dann nach und nach wieder gefüllt wird.Da
die Bezeichnungen „Tisch“,„QS“,„Durch“ und „Bonus“ in diesem
Bereich von mir aus kontinuirlich dort stehen können,halte ich
diesen Code für unnötig.

Ich denke, das hast du richtig analysiert. Wenn sich am Breich A1:smiley:O9 nie etwas ändert, kann er auch stehenbleiben. Ich würde aber den Code nicht gleich völlig löschen, sondern ihn „auskommentieren“. Dafür musst du vor jede Zeile ein Semikolon setzen. Das geht am schnellsten, wenn du dir diesen Befehl in die Menüleiste legst:

  • Rechtsklick auf die Menüleiste im VBA Editor.
  • Apassen wählen und hier den Reiter Befehle
  • Unter Bearbeiten gibt es die Knöpfe „Block auskommentieren“ und „Auskommentierung des Blocks aufheben“.
  • Diese beiden Knöpfe kannst du dir in die Menüleiste ziehen.
  • Jetzt brauchst du nur den auszukommentierenden Code zu markieren und klickst auf den Auskommentierknopf.

Sollte dieser Code aber nötig sein,was zur Zeit wahrscheinlich
nur Reinhard weiss,warum kann dieser Teil
.Cells(2, Spa + 1).Font.Bold = True
.Cells(2, Spa + 5).Value = 0
.Cells(2, Spa + 5).Font.Bold = True
.Cells(3, Spa + 5).Value = „Bonus“
.Cells(3, Spa + 5).Font.Bold = True

der Übersichtlichkeit nicht hier drunter stehen
.Cells(3, Spa + 1).Value = „Tisch“
.Cells(3, Spa + 1).Font.Bold = True
.Cells(7, Spa + 1).Value = „QS“
.Cells(7, Spa + 1).Font.Bold = True
.Cells(7, Spa + 5).Value = „Durch“
.Cells(7, Spa + 5).Font.Bold = True
.Cells(8, Spa + 1).Value = 0
.Cells(8, Spa + 5).Value = 0

Die Funktionalität ist dieselbe,nur für mich als blutigen
Anfänger ist das strukturiert,übersichtlicher und
verständlicher

Doch ich denke, du könntest das zusammenfassen. Wie Reinhard schrieb, ist das wohl ein über längere Zeit gewachsenes Projekt (ich kenne kaum andere). Da ist es nicht verwunderlich, wenn nicht alles so aus einem Guss ist.

Wie ich allerdings diesen Teil verstehen soll,keine Ahnung,da
mir die Hilfe nichts verständliches dazu bringt. Target
bedeutet ja eigentlich Ziel,aber Count und Row…hm

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OK As Boolean, N As Integer, Wert, Auswahl As String
On Error GoTo hell
If Target.Count > 1 Then Exit Sub
If Target.Row > 166 Or Target.Row

Re^2: Warnung: Antwort ist lang :smile:
Hallo Frank,

zuerst einmal „Willkommen zurück“. Es freut mich dass es dir
wieder besser geht.

dankeschön.

Sollte ich mein Projekt tatsächlich beenden,dann nur alleine
wegen meinem mangelndem Wissen und Verständnis für VBA.

Warum kannst du jetzt gehen?
Weil du damals, so im Pampersalter dein Projekt „Laufen lernen“
NICHT aufgegeben hast, oder nicht?
Gib doch VBA eine Chance, ich habe doch versucht zu beschreiben daß
der Anfang dornig und mit Mißerfolgen gespickt ist.

Auf
der anderen Seite gönne ich es aber Excel nicht,mich in die
Flucht geschlagen zu haben :wink:

Sehr gute Einstellung *freu*

Ich habe im Moment Zeit und
sitze quasi von Morgens bis Abends an diesem Code,und versuche
ihn zu verstehen.

Okay, ab morgen helfe ich dir beim Verstehen *versuch*

ich vermute einfach mal,das meine Denkweise verkehrt ist und
ich immer noch den Merksatz von Basic im Kopf habe…
If…Then…Else >Scheint die Sonne,dann gehen wir
schwimmen,ansonsten bleiben wir Zuhause.

??? Der Merksatz ist doch okay. Das B in VBA bedeutet „Basic“.

Ich benutze zum Erlernen von VBA das Buch…VBA mit Excel 2000
von Patrizia S. Prudenzi. Auch wenn ich selbst die 2003er
Version auf dem PC nutze,sollte ich damit zunächst zurecht
kommen.

Natürlich. 2000 und 2003 gibt sich nicht viel. Meiner Meinung nach
müßte 2000er Code problemlos in 2003 laufen.

Wenn du oder ein Excel Experte :smile: neben mir
sitzen würden,würde ich die Materie auch noch besser und
schneller Verstehen.

Ausserdem bin ich mit meinen 48 Jahren
auch nicht mehr der Jüngste,was das Lernen anbelangt.

Ja, lässt nach, Lernen fällt schwerer *seufz*
Du siehst ja mein Eintrittsdatum, damals wußte ich von VBa noch Null,
durch eine Datei/mappe die ich bekam wollte ich wissen was denn
dieses Excel ist.

Ein Jahr später machte ich zum ersten Mal Alt+F11…
Ich war damals 43. Also stell dich nicht so an Jungspund *grien*

Wie schon im anderen Posting erwähnt,ist der Code für mich
unstrukturiert. Dass das ein oder andere noch im nachhinein
kam,daran habe ich nicht gedacht.

Du brauchst gar nicht zu glauben daß Codes von mir die Stückchenweise
gewachsen sind insgesamt strukturiert sind.
Die sind von mir so daß sie funktionieren, fertig.
Weiß ich gleich was alles zu tun ist sind sie besser, naja, zumindest anders strukturiert.

Nachdem man mir erklärt hat,was es mit der Public Function
qsum und der Public Sub step4() auf sich hat,suche ich seit 2
Tagen den entsprechenden Code für QS-Solo. Auch der Tip von
Andreas mit der F8 Taste,bringt mich irgendwie durcheinander.

K.A., wie gesagt hab den Code noch gar nicht wieder angesehen.
qsum ist klar Quersumme, QS-Solo klar Quersumme für Solospiler
*erinner*. step4() sagt mir grad mal nix.
Was bringt dich bei F8 durcheinander?

Kann es sein,dass das vielleicht für den Anfang zuviele Info´s
sind

Ja.

und ich zuviel auf einmal möchte.

Möglich. Schaue nicht auf das was du nicht verstehst. Schaue auf das
wo du nahezu durchblickst, das kriegste hin das dir selbst zu erklären
durch Rumprobieren, F8 usw.

Wo du gar ni blickst frag gezielt nach.
Das ist sowieso eine Kunst die du erlernen mußt. Du MUßT fähig werden
aus einem Riesencode dein genaues Problem herauszulösen
und es lauffähig zu präsentieren wenn du wo anfragst.

Lauffähig ist

sub test
dim a,b, c
a=5
b=7
c=0
a=b/c
end sub

Nicht (direkt) lauffähig bzw. unklar ist

sub test
a=b/c
end sub

Okay, Lauffä#hig ist das falsche Wort. Ich meine eine eigenständige
komplette Prozedur wo man als Fremder sieht welche Werte die
Variablen haben, ggfs. auch wie sie mit Dim deklariert sind.

Im ersten Fall sieht man, du auch schon, daß DIV/0 als Fehler kommen
muß. Im zweiten Fall siehste nix.
is nur ein Beispiel wo man sich auch so DIV/0 erklären kann
wenn man das zweite sieht.

Lese mal dazu bitte:
http://www.online-excel.de/fom/butout.php?f=1&b=3

So,das solls erstmal gewesen sein

Seh ich für mich genauso, für heute Abend *gähn* *gg*

Gruß
Reinhard

Guten Morgen zusammen,

während Reinhard sich höchstwahrscheinlich noch in mein „Grossprojekt“ einliest,sind mir wieder neue Ideen gekommen.

Ob sie tatsächlich zum Einsatz kommen,steht noch nicht fest.Mir gehts allein darum,zu verstehen,was in jeder einzelnen Zeile passiert.

Idee1: Arbeitsmappe mit einem Tabbellenblatt(Vorlage). Per VBA soll nun beim Öffnen der Arbeitsmappe die Vorlage kopiert,ans Ende der Mappe gesetzt werden und mit dem aktuellen Datum versehen werden.

 Private Sub Workbook\_Open()
'Application.ScreenUpdating = False
 ActiveSheet.Copy After:=Sheets(Sheets.Count)
 Sheets(Sheets.Count).Name = Date
'Application.ScreenUpdating = True
End Sub

Soweit so gut.Dann ist mir selber aufgefallen,dass Zeile 3 völliger Quatsch ist.Da eh nur ein Tabellenblatt vorhanden ist,ist das eh aktiv und zum anderen,wenn ich die Mappe ein zweites mal starte und das neu erzeugte Blatt aktiv ist,wird von diesem eine Kopie gemacht.

Also aus ActiveSheet > Sheets(1) gemacht.Klappt einwandfrei.Nun habe ich mir gedacht,ich lasse das Original verschwinden und habe die Zeile

Sheets(1).Visible = False hinzugefügt. Auch das klappt wunderbar.Aber beim erneuten Öffnen macht Excel mir ne Kopie und versteckt diese Kopie auch.

Wo ist nun mein Denkfehler? Bitte keine Lösung ,sondern nur ein Denkanstoss,damit ich in der Hilfe die entsprechende Lösung finde.Ich komme nämlich weder mit der Hilfe noch mit dem Objektkatalog klar.

LG Frank

P.S. Wozu die beiden Zeilen mit den ScreenUpdatings gut sind weiss ich
auch noch nicht

So,habe meinen Denkfehler ausgemerzt und mein Problem auf folgende Weise behoben.

 Private Sub Workbook\_Open()
 Sheets(1).Copy After:=Sheets(Sheets.Count)
 Sheets(Sheets.Count).Name = Date
ActiveSheet.Visible = True

Warum Excel mir die neu erstllte Kopie auch versteckt,wenn die Vorlage ausgeblendet ist und ich die Zeile > ActiveSheet.Visible = True weglasse,ist mir allerdings ein Rätsel.

LG Frank

Hallo Frank,

während Reinhard sich höchstwahrscheinlich noch in mein
„Grossprojekt“ einliest,sind mir wieder neue Ideen gekommen.

in der Tat, wohlwollend kann man das so ausdrücken.
Ich schleiche schon um das Großprojekt herum aber aber,
die schiere Länge der Beitragsfolge schreckt mich noch ab da auch
durchzulesen :smile:

Sheets(1).Visible = False hinzugefügt. Auch das klappt
wunderbar.Aber beim erneuten Öffnen macht Excel mir ne Kopie
und versteckt diese Kopie auch.

Wo ist nun mein Denkfehler? Bitte keine Lösung ,sondern nur ein
Denkanstoss,

Wenn die Vorlage Sheets(1) ist so bleibt sie das auch wenn das Blatt
ausgeblendet ist. Außer du fügst vor dem Blatt ein anderes ein.
Zeig mal bitte deinen aktuellen Code.

P.S. Wozu die beiden Zeilen mit den ScreenUpdatings gut sind
weiss ich auch noch nicht

Hier wird das nicht sichtbar/meßbar. Bildschirmaktualisierungen kosten
Zeit. Je nachdem was Excel im/am Bildschirm ändert ist der Zeitgewinn relativ.
Ein Beispielcode ist nachfolgend.

Gruß
Reinhard

Sub test()
Dim Zei As Long, T As Single
Const Bis As Long = 65536

T = Timer
For Zei = 1 To Bis
 Cells(Zei, 1).Value = Zei
Next Zei
Range("B1").Value = Timer - T

Application.ScreenUpdating = False
T = Timer
For Zei = 1 To Bis
 Cells(Zei, 1).Value = Zei
Next Zei
Range("B2").Value = Timer - T
Application.ScreenUpdating = True

End Sub

Hallo Reinhard,

in der Tat, wohlwollend kann man das so ausdrücken.
Ich schleiche schon um das Großprojekt herum aber aber,
die schiere Länge der Beitragsfolge schreckt mich noch ab da
auch
durchzulesen :smile:

Das ist eigentlich auch gar nicht so wichtig. Wenn du Interesse hast,die retlichen Funktionen als Code zu implementieren und eventuell den Code für QS-Solo,QS-Pchchen,QS-Tisch in ein Modul und entsprechen dasselbe für Prim und Durch hätten wir zei Fliegen mit einer Klappe geschlagen.So könnte ich mir anschauen,wo die Unterschiede in den einzelnen Codes liegen und sie auch besser verstehen. Vorrausgesetzt natürlich,es ist kein zu grosser Aufwand.

Zeig mal bitte deinen aktuellen Code.

 Private Sub Workbook\_Open()
'Application.ScreenUpdating = False
 Sheets(1).Copy After:=Sheets(Sheets.Count)
 Sheets(Sheets.Count).Name = Date
'Application.ScreenUpdating = True
'ActiveSheet.Visible = True
End Sub

Wobei die Vorlage ausgeblendet ist

Hier wird das nicht sichtbar/meßbar.
Bildschirmaktualisierungen kosten
Zeit. Je nachdem was Excel im/am Bildschirm ändert ist der
Zeitgewinn relativ.

Okay,hatte die beiden Zeilen aus meinem Sammelsurium mal mit reinkopiert.

LG Frank

Grüezi Frank

Warum Excel mir die neu erstllte Kopie auch versteckt,wenn die
Vorlage ausgeblendet ist und ich die Zeile >
ActiveSheet.Visible = True weglasse,ist mir allerdings ein
Rätsel.

Nö, das ist doch klar - die Vorlage die kopiert wird ist ausgeblendet.
Warum soll denn die Kopie nun auf einmal eingeblendet sein?
.Visible ist eine Eigenschaft des Tabellenblattes, die Du selbst auf =False gesetzt hast. Das bleibt auch in der Kopie so, bis Du die Eigenschaft in .Visibe = True änderst.

Rätselhaft daran ist nicht, das ist nur logisch… :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

Nö, das ist doch klar - die Vorlage die kopiert wird ist
ausgeblendet.
Warum soll denn die Kopie nun auf einmal eingeblendet sein?
.Visible ist eine Eigenschaft des Tabellenblattes, die Du
selbst auf =False gesetzt hast. Das bleibt auch in der Kopie
so, bis Du die Eigenschaft in .Visibe = True änderst.

Rätselhaft daran ist nicht, das ist nur logisch… :wink:

Wieder was gelernt.Ich dachte,„ausgeblendet“ wäre ein Zustand.

Also wird generell eine 1:1 Kopie erstellt.Ist das richtig?

LG Frank

Grüezi Frank

Nö, das ist doch klar - die Vorlage die kopiert wird ist
ausgeblendet.
Warum soll denn die Kopie nun auf einmal eingeblendet sein?
.Visible ist eine Eigenschaft des Tabellenblattes, die Du
selbst auf =False gesetzt hast. Das bleibt auch in der Kopie
so, bis Du die Eigenschaft in .Visibe = True änderst.

Rätselhaft daran ist nicht, das ist nur logisch… :wink:

Wieder was gelernt.Ich dachte,„ausgeblendet“ wäre ein Zustand.

Also wird generell eine 1:1 Kopie erstellt.Ist das richtig?

Ja, ganz genau - wie sollte Excel denn auch sonst reagieren oder ‚wissen‘ welche Eigenschaften der User denn übernehmen will und welche nicht.
Darum werden beim Kopieren eben alle Eigenschaften so übernommen wie sie gerade gesetzt sind.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

Ja, ganz genau - wie sollte Excel denn auch sonst reagieren
oder ‚wissen‘ welche Eigenschaften der User denn übernehmen
will und welche nicht.
Darum werden beim Kopieren eben alle Eigenschaften so
übernommen wie sie gerade gesetzt sind.

Von dieser Seite aus betrachtet natürlich logisch. Werd mir mal nen Merksatz dafür basteln,sonst hab ich das bei der Fülle an Info´s irgendwann wieder vergessen.

Da ich ja auf diesem Wege VBA lernen möchte,hab ich mir was neues ausgedacht,weil ich ja in meiner Tabbi öfters damit konfrontiert werde.

Ich möchte prüfen,welcher Block in Spalte E im Bereich von Zeile E13-E163,also immer 4 Zeilen zusammen geprüft,ob sie leer sind.

Dazu folgende Idee von mir:

Sub Test()
Dim i As Long
For i = 13 To 163 Step 5
 If Sheets(1).Cells(i, 5).Value = "" Then
' If Sheets(1).Cells(i, 5).Value + Sheets(1).Cells(i + 2, 5).Value = "" Then
MsgBox "Hurra"
 End If
Next i
End Sub

So prüft der Code nur jede 5. Zeile(13,18,23 usw.)Das klappt auch prima.Wenn ich nun stattdessen aber diese Zeile

If Sheets(1).Cells(i, 5).Value + Sheets(1).Cells(i + 2, 5).Value = „“ Then
oder gar diese nehme

If Sheets(1).Cells(i, 5).Value + Sheets(1).Cells(i + 1, 5).Value + Sheets(1).Cells(i + 2, 5).Value + Sheets(1).Cells(i + 3, 5).Value = „“ Then

passiert gar nix,obwohl das für mich logisch erscheint im Bezug auf die Zeile wo es funktioniert.
Hintergedanke dabei ist,dass ich prüfe welcher Block leer ist und diese Gruppierung dann ausblende. Aber dazu später mehr.

Habe ich wieder mal einen Gedankenfehler?

LG Frank

Hallo Frank,

Ich möchte prüfen,welcher Block in Spalte E im Bereich von
Zeile E13-E163,also immer 4 Zeilen zusammen geprüft,ob sie
leer sind.

E13-E163 sind 151 Zellen. 152 wär durch 4 zu teilen.
Ist E152 leer oder steht da Summe o.ä.?
Probiere mal den nachstehenden Code.

If Sheets(1).Cells(i, 5).Value + Sheets(1).Cells(i + 1,
5).Value + Sheets(1).Cells(i + 2, 5).Value + Sheets(1).Cells(i

  • 3, 5).Value = „“ Then
    passiert gar nix,obwohl das für mich logisch erscheint im
    Bezug auf die Zeile wo es funktioniert.

so:
If Sheets(1).Cells(i, 5).Value & Sheets(1).Cells(i + 1, _
5).Value & Sheets(1).Cells(i + 2, 5).Value _
& Sheets(1).Cells(i + 3, 5).Value = „“ Then MsgBox „leer“

Gruß
Reinhard

Option Explicit

Sub Test()
Dim Zei As Long
With Sheets(1)
 For Zei = 13 To 163 Step 4
 If Application.CountBlank(.Range("E" & Zei & ":E" & Zei + 3)) = 4 Then
 MsgBox .Range("E" & Zei & ":E" & Zei + 3).Address(0, 0) & " ist leer"
 End If
 Next Zei
End With
End Sub
1 Like

Guten Morgen Reinhard,

habe deinen Tippfehler mal geändert und aus der 4 ne 5 gemacht.Soll ja Spalte „E“ geprüft werden.

E13-E163 sind 151 Zellen. 152 wär durch 4 zu teilen.
Ist E152 leer oder steht da Summe o.ä.?
Probiere mal den nachstehenden Code.

E13-E166 sind genau 150 Zeilen.Ich hatte bewusst 163 eingegeben,weil ich ja nach meinem Denken nur jede 1.Zeile von jedem Block ansprechen wollte und diese dann entsprechend erweitern.
Dim Zei as Long ist mir dann auch selbst eingefallen,wegen der Übersichtlichkeit(mir mal auf die Schulter klopf :wink:)

If Sheets(1).Cells(i, 5).Value + Sheets(1).Cells(i + 1,
5).Value + Sheets(1).Cells(i + 2, 5).Value + Sheets(1).Cells(i

  • 3, 5).Value = „“ Then

so:
If Sheets(1).Cells(i, 5).Value & Sheets(1).Cells(i + 1, _
5).Value & Sheets(1).Cells(i + 2, 5).Value _
& Sheets(1).Cells(i + 3, 5).Value = „“ Then MsgBox „leer“

Nach nochmaligem durchlesen ist mir auch klar geworden(ich hoffe es zumindest),warum das kaufmännische &-Zeichen. Das ±Zeichen wäre für eine Addition und bezieht sich auf den Wert der Zelle,während sich das &-Zeichen auf die Zelle/Spalte als Objekt bezieht.

Gruß

Frank

habe deinen Tippfehler mal geändert und aus der 4 ne 5
gemacht.Soll ja Spalte „E“ geprüft werden.

Hallo Frank,

in welchem Code denn?

Gruß
Reinhard

Guten Morgen Reinhard,

in welchem Code denn?

in deinem hier :

Option Explicit 
Sub Test() 
Dim Zei As Long 
With Sheets(1) 
 For Zei = 13 To 163 Step 4 
 If Application.CountBlank(.Range("E" & Zei & ":E" & Zei + 3)) = 4 Then 
 MsgBox .Range("E" & Zei & ":E" & Zei + 3).Address(0, 0) & " ist leer" 
 End If 
 Next Zei 
End With 
End Sub

Und da muss es Step 5 heissen,dann klappts auch. Das mit der Spalte war nen Fehler von mir. Sollte jede 5.te Zeile heissen :wink:

Konntest du dich denn mittlerweile in dem Urwald von Code durchlesen?

LG Frank