Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten 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
Antworten 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
Antworten Top
#4
Vielen lieben Dank Smile
Genau was ich brauche.
Der Code funktioniert wie ich mir vorgestellt habe.

LG
Antworten Top


Gehe zu:


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