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

CommandButton enable sobald Formular ausgefüllt

CommandButton enable sobald Formular ausgefüllt
28.01.2015 13:38:13
Jeany
Hallo
ich habe in einer Excel Tabelle ein Formular erstellt. Es enthält 5 ausfüllbare Zellen. _ Zuunterst befindet sich ein Button, mit dem man das File per Mail schicken kann. Der Code hierfür sieht so aus:

Private Sub CommandButton1_Click()
Dim Mappe As Integer
Mappe = 1
CommandButton1.Visible = False
Sheets.Copy
ActiveWorkbook.SendMail "name@mail.com", "Betreff"
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
CommandButton1.Visible = True
End Sub

Ich brauche nun einen Code, der den Button erst enablet (CommandButton1.Enabled = True) wenn alle Felder ausgefüllt sind. (Zusätzlich habe ich eine Formel geschrieben, die die nichtleeren Felder zusammenzählt)
Der Code sieht so aus:

Private Sub CommandButton1_Change()
If Cells(75, 14) = 0 Then
CommandButton1.Enabled = True
Else: CommandButton1.Enabled = False
End If
End Sub

Könnt ihr mir bitte sagen, wie man den Code umschreiben kann, damit er konstant prüft ob die Zelle (75, 14) leer ist, oder sich noch ein Wert (1-5) drin befindet?
Oder habt ihr eine einfachere Lösung?
Vielen Dank für eure Hilfe
Jeany

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
CommandButton enable sobald Formular
28.01.2015 14:35:25
Oberschlumpf
Hi Jeany
Schreib ins Change-Ereignis der Tabelle, um die es dir geht, diesen Code:

If Target.Adress = "$N$75" Then
If Target.Value  "" Then
MsgBox "Zelle N75 enthält den Wert: " & Target.Value
End If
End If
Mein Code prüft bei JEDER Zelländerung, ob Zelle N75 oder Cells(75,14) einen Wert enthält.
Wenn nein, passiert nix, wenn ja, erscheint die MsgBox mit dem Hinweis.
Hilfts?
Ciao
Thorsten

AW: CommandButton enable sobald Formular
03.02.2015 10:13:32
Jeany
Hallo Thorsten
sorry für die späte Antwort (ich musste zuerst nachfragen wie ich auf deine Antwort antworten kann :-/)
und sorry nr. 2: ich verstehe deinen Lösungsvorschlag nicht ganz: Welches ist das Change-Ereignis?
Ich hab das mal so geschrieben:
Private Sub CommandButton1_Change()
If Target.Adress = "$N$75" Then
If Target.Value  "" Then
Else: CommandButton1.Enabled = False
End If
End If
End Sub
aber dann erhalte ich einen Run-time Error 424.
Wo liegt der Fehler?
Vielen Dank

Anzeige
AW: CommandButton enable sobald Formular
03.02.2015 10:22:20
Oberschlumpf
Hi Jeany
Mein Text war:
Schreib ins Change-Ereignis der Tabelle
Du hast den Code aber ins Change-Ereignis des CommandButtons eingefügt.
Erkennst du jetzt den Fehler? :-)
hier ne Bsp-Datei:
https://www.herber.de/bbs/user/95507.xls
Da befindet sich der Code im Change-Ereignis von Tabelle1.
Du musst nun in deiner Datei DEINE Tabelle (um die es dir geht) so bearbeiten, d h, der Code muss im WorkSheet_Change-Ereignis DEINER Tabelle so stehen, wie in der Bsp-Datei für Tabelle1.
Hilfts?
Ciao
Thorsten

Anzeige
AW: CommandButton enable sobald Formular
03.02.2015 10:43:00
Jeany
Okay ich habe den Fehler erkannt und gemäss Deinen Anweisungen Deinen Code in meine Tabelle eingefügt:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Adress = "$N$75" Then
If Target.Value  "" Then
MsgBox "Zelle N75 enthält den Wert: " & Target.Value
End If
End If
End Sub
Wenn ich jetzt aber in irgend einer Zelle etwas eingebe kommt der Fehler Run-time Error '438' :-/

AW: CommandButton enable sobald Formular
03.02.2015 10:49:27
Oberschlumpf
Tja, genau so, wie du durch meine Bsp-Datei dir weiterhelfen konntest, bin jetzt auch ich auf ne Bsp-Datei von dir angewiesen.
Ich kenn deine Datei und schon gar nicht vielleicht noch weiteren, von dir eingesetzten VBA-Code.
So kann ich auch nicht erkennen, woran es noch hakt.
p.s. ne Anrede in jedem Beitrag is irgdwie schöner...

Anzeige
AW: CommandButton enable sobald Formular
03.02.2015 10:56:21
Jeany
Hallo Thorsten
wie in deiner Beispieldatei habe ich noch nachfolgend den Code für das versenden der Datei via E-Mail angefügt. Sonst habe ich keine Codes in der Tabelle:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Adress = "$N$75" Then
If Target.Value  "" Then
MsgBox "Zelle N75 enthält den Wert: " & Target.Value
End If
End If
End Sub
Private Sub CommandButton1_Click()
Dim Mappe As Integer
Mappe = 1
CommandButton1.Visible = False
Sheets.Copy
ActiveWorkbook.SendMail "vorname.name@email.com", "Betreff"
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
CommandButton1.Visible = True
End Sub
Danke und Gruss
Jeany

Anzeige
AW: CommandButton enable sobald Formular
03.02.2015 11:00:03
Oberschlumpf
Hi Jeany
Und was is so schwer daran, mir per Upload (d)eine (Bsp-)Datei zur Verfügung zu stellen?
Ohne Datei bleibt es Rätselraten, und dazu hab ich keine Lust, sorry.
Ciao
Thorsten

AW: CommandButton enable sobald Formular
03.02.2015 11:59:23
Jeany
Hallo Thorsten
okay, hier die Datei, die wie erwähnt bei jeder Eingabe den Fehler anzeigt.
https://www.herber.de/bbs/user/95510.xlsm
Hoffe Du kannst etwas damit anfangen.
Vielen Dank im Voraus
Jeany

AW: CommandButton enable sobald Formular
03.02.2015 20:05:11
Oberschlumpf
Hi Jeany
sry, dass du so lange warten musstest.
Aber leider hab ja auch ich noch n Leben außerhalb von Excel :-)
So, dafür hatte ich mich nun mit deiner Datei beschäftigt.
Und MIT Datei erkannte ich sofort, dass ich schon mit meinem ersten Code-Bsp n Fehler reinhaute.
Schon meine erste Zeile
If Target.Adress = "$N$75" Then
enthält den Fehler, dass es nicht Adress, sondern Address heißen muss.
Aber auch damit war das Problem noch nicht gelöst.
Auch wieder MIT deiner Datei verstand ich erst, dass du in Zelle N75 eine Formel verwendest.
Ja, ich weiß, nach erneutem Lesen deines Erstbeitrages hab ich gesehen, dass du schon da von einer Formel geshcrieben hattest.
Und trotzdem hatte ich es - bis dahin ohne Datei - nicht verstanden.
Nun aber, da Verwendung von Formel, nützt mein Code gar nix, der nur bei direkter Zelländerung reagieren würde, nicht aber bei Wertänderung durch eine Formel.
Na ja, nun muss ich auch noch zugeben, dass ich mit der Verwendung deiner Hilfszellen auch nach mehreren Versuchen nicht zurecht kam, sprich, keine Lösung gefunden habe.
Deswegen hab ich deine Datei nachgebaut (hoffe, dass ich nix vergessen habe)
https://www.herber.de/bbs/user/95527.xls
Meine Datei arbeitet NICHT mit Hilfszellen, sondern überprüft die 5 Zellen direkt bei Eingabe in jeder der einzelnen 5 Zellen, um die es dir geht.
Bedeutet:
- beim Öffnen der Datei sind zur Zeit alle 5 Zellen ohne Inhalt, und der Button ist deaktiviert
- trägst du in eine der 5 Zellen B20, B24, B28, B32 + B36 etwas ein, werden per Code IMMER all diese Zellen überprüft, ob sie einen Wert enthalten oder nicht
- enthält nur eine der Zellen noch keinen Eintrag, bleibt der Button deaktiviert
- sobald aber alle 5 Zellen etwas enthalten, wird, wie von dir gewünscht, der Button aktiviert, und du kannst ihn anklicken
Noch ne Codeänderung von mir, was den Button betrifft.
Dein Code kopiert die Tabelle in eine neue Datei und versendet die neue Datei per Mail.
Das hat aber, so finde ich zumindest, den unschönen Nebeneffekt, dass auch der VBA-Code mit in die neue Datei eingefügt wird.
Mein Code erstellt erst einfach nur eine neue Datei.
Jetzt werden alle Zellen aus deiner Datei kopiert und in die neue Datei eingefügt.
In diesem Fall werden wirklich nur die Zellen kopiert + eingefügt.
Der VBA-Code aus deiner Datei bleibt außen vor und landet nicht mit in die neue Datei, die ja versendet wird.
Wenn dir der Code bzgl des Buttons nicht gefällt, dann lösch meinen Code und aktiviere wieder deinen Code für den Button.
Konnte ich denn, wenn auch etwas spät, helfen?
Ciao
Thorsten
...ach ja, du musst natürlich nicht, aber zeig ruhig bei jeder neuen Frage gleich eine Bsp-Datei...

Anzeige
AW: CommandButton enable sobald Formular
04.02.2015 09:21:45
Jeany
Hallo Thorsten
ich danke Dir vielmals für die Lösung, die ja noch besser ist als ich es mir vorgestellt habe :-)
Ich habe nun genau Deinen Code in meine Tabelle reinkopiert, aber bei meiner Tabelle erscheint bei jeder Eingabe der Fehler
Compile error: Variable not found
und verweist auf
cmdGo.Enabled = True
Da Du Dir aber bereits genug Mühe gegeben hast mit deiner eigenen Beispieltabelle werde ich nun Deine Tabelle benützen und meine Daten dort einbauen.
Nochmals vielen herzlichen Dank für Deine Hilfe! :-)
Grüsse
Jeany

AW: CommandButton enable sobald Formular
04.02.2015 14:32:41
Jeany
Hallo Thorsten
eine Frage habe ich noch, bzw eine Zusatzanforderung: Mein Vorgesetzter möchte in der Datei noch drei Register einfügen für unsere 3 Auslandfilialen. Wenn ich Deinen Code reinkopiere und den Button klicke, schickt es natürlich immer nur das erste Registerblatt.
Die Idee hinter den total 4 Registern (und nicht alle Filialen im Tabellenblatt 1) ist, dass zwar in allen Registern dasselbe Formular auszufüllen ist, aber für die jeweilige Filiale ein Vorschaubild der Visitenkarte (anderes Design) abgebildet ist.
Kann man für jedes Register den Button so programmieren, dass er das entsprechende Registerblatt schickt, oder ist es einfacher per wenn-dann-Funktion jeweilige Vorschaubilder einblenden zu lassen?
Vielen Dank für die Hilfe
Jeany
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige