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 sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf 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.

Die Updates sind abgeschlossen. Bitte meldet eventuelle Bugs und Auffälligkeiten im entsprechenden Forum.
Sollte das Loginfenster nicht sichtbar sein, ist es unten links. Entweder Ihr loggt Euch dort ein oder löscht den Browsercache und versucht es noch einmal.


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.
Antwortento top
#2
Hallo,

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

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 Benutzer sagt Danke an Kl@us-M. für diesen Beitrag:
  • alnourx
Antwortento 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 Benutzer sagt Danke an RPP63 für diesen Beitrag:
  • alnourx
Antwortento top
#4
Vielen lieben Dank :-)
Genau was ich brauche.
Der Code funktioniert wie ich mir vorgestellt habe.

LG
Antwortento top


Gehe zu:


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