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

Button deaktivieren

Button deaktivieren
15.10.2013 20:37:38
Mike
Hallo an alle,
habe eine kleine Exccelvorlage kreiert. Diese wird mit einem Makro unterstützt.
Per Betätigen eines Buttons, wird eine Anfrage an eine DB gestellt. Dies ist etwas Zeitversetzt.
Vorgeschichte:
Daten werden aus einer DB per Script (PHP) gelesen und an EXCEL übergeben. Diese Daten bereite/ lege ich in ein Tabellenblatt. Funktioniert auch. Der Bereich ist definiert. Anfrage wird per Button angesetzt. WEnn aber der Benutzer zweimal auf den Button drückt, dann wird auch die Abfrage zweimal gestartet. Dabei verschieben sich Bezüge in den Zellen dauerhaft. Trotz das ich sie fix gesetzt habe. ($x$x) nun möchte ich einfach, dass nach einmaligem Druck auf den Button dieser grau oder inaktiv wird, bis die Abfrage generiert wurde. So schliesse ich ein verschieben meiner Bereich und Bezüge aus.
FRage am Rande wäre trotzdem noch, warum sich fixe Bezüge verändern?
Danke für Eure Bemühungen.
Gruß Mike

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button deaktivieren
15.10.2013 21:00:57
Bastian
Hallo,
Mit CommandButton1.Enabled=False
kannst Du einen Button deaktivieren.
Schau mal in die Eigenschaften des Button.
Da kannst Du auch die Schriftfarbe ändern, und so den Button "ausgrauen".
Gruß, Bastian

AW: Button deaktivieren
15.10.2013 22:26:41
Matze
Hallo Mike,
entweder wie Bastian schreibt den Button für eine zweites drücken sperren.
Du kannst aber wenn deine Abfrage in einer eigenen Sub steht so über den Button steuern das es nur einmal aufgerufen wird.
Sub Abfrage()
'deine Code
End Sub
In der Tabelle wo der Commandbutton ist
Option Explicit
Public xyz  As Boolean
Private Sub CommandButton1_Click()
If xyz = False Then
Call Abfrage
xyz = True
End If
End Sub
Um dann wieder die Abfrage zu nutzen muss der Bolean Wert xyz wieder auf false gesetzt werden.
Gruß Matze

Anzeige
AW: Button deaktivieren
16.10.2013 00:15:01
Mike
Hallo Bastian und Matze,
erst einmal danke.
Wie kann ich nachträglich herausfinden, wie der Button genau heisst? Es handelt sich vielmehr um einen Button für ein Formular. Ist also quasi auf einem Tabellenblatt gebettet.
zweite Frage an Matze:
für das xyz Public, muss da ein bestimmter Wert aus meinem jetzigen Code rein oder ist es eine neue "Variable", die man für die Routine benötigt?
Wie sollte der Befehl für die False-Anweisung für das Bolean aussehen und wo sollte diese stehen? Ich denke natürlich am Ende meiner Routine, oder?^^ Als Abschluss meines Makros wird eine bestimmte Zelle als Auswahl "angefahren". Demzufolge würde ich davor die Anweisung setzen.
Danke im Voraus
Mike

Anzeige
AW: Button deaktivieren
16.10.2013 08:32:08
Bastian
Hallo Mike,
wenn Du im Entwurfsmodus auf den Button (ActiveX) klickst, steht der Name im Namensfenster von Excel.
Gruß, Bastian

AW: Button deaktivieren
16.10.2013 16:26:48
Matze
Hallo,
im VBA Editor siehst du im Eigenschaftenfenster alles was den Button betrifft.
Public xyz As BOOLEAN : (klick im VBA Editor auf Boolean und dann auf F1)
Variablen vom Datentyp Boolean werden als 16-Bit-Zahlen (2 Bytes) gespeichert, die nur die Werte True oder False annehmen können. Variablen vom Datentyp Boolean werden als Wahr oder Falsch ausgegeben, wenn Print verwendet wird, bzw. als #TRUE# oder #FALSE#, wenn Write # verwendet wird. Mit den Schlüsselwörtern True und False weisen Sie einer Variablen vom Typ Boolean einen von zwei Zuständen zu.
Beim Umwandeln anderer numerischer Datentypen in Werte des Typs Boolean wird 0 zu False, und alle anderen Werte werden zu True. Beim Umwandeln von Werten des Datentyps Boolean in andere Datentypen wird False zu 0 und True zu -1.
Du kannst auch mit einem Wert aus einer Zelle die Überprüfung machen:
Private Sub CommandButton2_Click()
If ThisWorkbook.Worksheets("Tabelle1").Cells(1, 1).Value = 0 Then '
Call Abfrage2
ThisWorkbook.Worksheets("Tabelle1").Cells(1, 1).Value = 1 'irgendwas anderes wie 0
End If
End Sub
Änderst du nun die Zelle A1 wieder auf 0 so wird die Abfrage wieder gestartet.
Matze

Anzeige
AW: Button deaktivieren
16.10.2013 20:14:17
Mike
Hallo Matze,
vielen Dank für Deine Geduld und Deine Mühe.^^
Aber bei mir stehen zu viele Bäume, so dass ich den Wald nicht sehen kann.
Die Schaltfläche, um welche es sich handelt ist die Schaltfläche 18. (lt. Excel) Diese müsste ich demnach im VBA mit CommandButton18_Click() ansprechen?
Habe mal das Ganze eingfügt, allerdings ohne dem Zusatz PRIVATE. (Bitte um Erläuterung.Danke.)

Sub CommandButton18_Click()
If ThisWorkbook.Worksheets("Start").Cells(2, 1).Value = 0 Then '
Call Daten_holen
ThisWorkbook.Worksheets("Start").Cells(2, 1).Value = 1 'irgendwas anderes wie 0
End If
End Sub
Sub Daten_holen()
Sheets("Ablage").Visible = xlSheetVisible
Sheets("Ablage").Select
Cells.Select
Selection.ClearContents
Range("B1").Select
Sheets("Config").Select
ActiveSheet.Unprotect Password:="123"
'link = Range("H30").Value
ActiveSheet.Protect Password:="123"
Sheets("Ablage").Select
Range("B31").Value = link
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & link, Destination:=Range("B" & 1 + i * 40))
Der Button bekam demnach von mir die neue Makrozuweisung CommanButton18_Click().
Der Durchlauf funktioniert m.M. nach. Habe aber keine Möglichkeit der DB-Anbindung, da ich hier am heimischen PC sitze und die DB-Anfrage auskommentiert habe. Kann also nicht sehen, ob in der Zeit der Anfrage der Button inaktiv bleibt.^^
Zweite Frage, wie setze ich am Ende der Routine die Anweisung, die Zelle wieder auf 0 zu setzen?
Und dritte Frage nochmal am Rande: Warum verschiebte sich der Bereich in meinen Formeln trotz der fixen Adressierung bei jeder erneuten Anfrage, ohne das die erte zum Ende kam? Müsste doch theoretisch die zweite auf die erste überlagert werden, oder?
Vielen Dank im Voraus.
Mike
VBA-Anfänger!

Anzeige
Bitte VBA Profi drüberschauen, danke
17.10.2013 16:33:42
Matze
Hallo Mike.
ich kenne mich mit dieser Art Abfrageerstellung nicht aus.
Deine Codezeilen sind für mich sehr verwirrend.
Was den Buttoncode betrifft, der befindet sich später in dem Tabellenblatt wo auch der Button ist.
wenn der Button 18 heisst , dann ist deine Vermutung korrekt!
um die angegeben Zelle wieder auf den Wert 0 zu bekommen, kannst du mit Ereignissen lösen wenn zb das Blatt "active" wird .
Code in die Tabelle Start
Private Sub Worksheet_Activate()
Worksheets("Start").Cells(2, 1).Value = 0
End Sub
oder beim öffnen der Arbeitsmappe einfach die Zelle direkt beschreiben
Code in diese Arbeitsmappe:
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Start").").Cells(2, 1).Value = 0
End Sub
Matze
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige