Hilfe bei Excel VBA - MsgBox
#1
Hallo,
Ich habe ein kleines Problem und hoffe, dass Sie mir dabei helfen können.
Ich habe ein Makro-Programm, das die Zellen ("D6:O6") von Tabellenblatt1 zu Tabellenblatt3 kopiert.
Ich wollte folgendes machen --> wenn die Zellen (von D6 bis O6) leer sind und aus Versehen auf Button1 geklickt wurde, sollte ein MsgBox ("Bitte erst die Zellen füllen") angezeigt werden ansonsten müssen die Zellen kopiert werden.
Ich habe den folgenden Code geschrieben aber irgendwie funktioniert nicht richtig.



Code:
Sub Button1()
'
' Button1 Makro
Dim rcell As Range
For Each rcell In Range("D6:O6")
If rcell.Value = "" Then
MsgBox ("Bitte erst die Zellen füllen")
Else
Range("D6:O6").Select
 Selection.Copy
 Sheets("Tabelle3").Select
    Range("A7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Rows("7:7").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 End If
    Next
End Sub


Danke.
Top
#2
Hallo,

zunächst mal: Wir duzen uns in den Foren Smile))

Zu Deiner Frage: Wenn Du Bedingungen stellst, lautet die Syntax eigentlich immer WENN -> DANN -> SONST (If -> Then -> Else).

Und genau dieses DANN (Then) fehlt in Deinem Code: Du lässt zwar die MsgBox aufspringen, sagst aber nicht, dass danach nix passieren soll. Ausserdem lässt sich Dein Code erheblich verkürzen, wenn Du auf die Selektiererei verzichtest ...


Code:
Option Explicit

Sub Button1()
Dim rcell As Range
For Each rcell In Range("D6:O6")
If rcell.Value = "" Then
MsgBox ("Bitte erst die Zellen füllen")
Exit Sub
Else
Range("D6:O6").Copy Sheets("Tabelle3").Range("A7")
End If
   Next
End Sub
Überlegen macht überlegen
Gruss aus dem schönen Hunsrück
_______ Klaus-Martin _______
[-] Folgende(r) 1 Nutzer sagt Danke an Kl@us-M. für diesen Beitrag:
  • alnourx
Top
#3
Moin!
Warum die Prüfung per Schleife?
(ich kann mich nur mit Schleifen in Arrays anfreunden)

Pseudo-Code:
Code:
If WorksheetFunction.CountA(Range("D6:O6")) < Range("D6:O6").Columns.Count Then


Two Cents,

Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • alnourx
Top
#4
Vielen lieben Dank Smile
Genau was ich brauche.
Der Code funktioniert wie ich mir vorgestellt habe.

LG
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste