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

Command button

Command button
08.05.2014 12:00:48
Nou
Hallo leute
ich habe ein Excel sheet mit zwei TabellenBlätter die Relevant für mich sind das eine heißt "Control" und befindet sich in Tab 1 das zweite "Labor" und ist in Tab 4.
Ich habe in mein erstes tabellenblatt zwei button mit smart art erstellt der erste button ist hier im Bild unbenannt aber er soll dazu dienen, dass mein VBA programm im Tab 4 erst startet wenn dort auf dem button start gedrückt wird und nicht automatisch!, also es ist sehr wichtig dass das Programm erst läuft wnn ich im ersten tab auf Start drücke.
Der zweite Button heißt "clear sheet Labor" er soll nun beim draufklicken den gesamten inhalt in meinem Tab 4 also "labor" löschen.
Leider weiß ich nicht wie ich die buttons richtig programmmiere damit es so läuft wie ich will.
https://www.herber.de/bbs/user/90563.doc
kann mirt jemand weiterhelfen?

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Command button
08.05.2014 12:42:00
Rudi
Hallo,
mach ne normale Prozedur statt Worksheet_Change draus.
Gruß
Rudi

AW: Command button
08.05.2014 13:04:08
Nou
Danke
Aber was muss ich genau verändern?
und wie kann ich mein button so prgrammieren dass das programm erst bei dem klick auf start loslegt und nicht schon davor?

AW: Command button
08.05.2014 14:54:25
Beverly
Hi,
wenn du Button1 drückst, dann schreibe in eine Zelle z.B. ein "x". Wenn du den Button2 drückst, dann prüfe ob die Zelle ein "x" enthält - wenn ja, dann deinen Code ausführen und die Zelle wieder leeren. Wenn nicht, dann z.B. eine MsgBox "Bitte erst Button1 drücken" ausgeben.


Anzeige
AW: Command button
08.05.2014 15:01:25
Nou
Sorry leider aufgrund meiner mangelnden Kenntnis habe ich nicht genau verstanden was du meinst.
Wo füge ich die msg box zu?
und wie mache ich das genau?

AW: Command button
08.05.2014 15:15:18
Beverly
Hi,
angenommen Button1 schreibt ein "x" in Zelle A1, dann so:
   If Range("A1") = "x" Then
' hier deinen Code
Range("A1").clearcontens
Else
MsgBox "Bitte erst Button1 drücken"
End If


AW: Command button
08.05.2014 15:34:21
Nou
OK vielen dank
so funktioniert es dass es nicht startet.
Aber wenn ich auf button2 drücke passiert trotzdem nichts?
ist der coder hier falsch?
ps: mein makri heisst "Bereich"
Private Sub CommandButton2_Click()
Call Bereich
End Sub

Anzeige
AW: Command button
08.05.2014 15:47:05
Beverly
Lade doch mal deine Mappe hoch, sonst kann man nur raten.


AW: Command button
08.05.2014 16:04:41
Beverly
Dein Makro enthält keinen Code:
Sub Bereich()
End Sub


AW: Command button
08.05.2014 19:21:42
Nou
Der Button 2 funktioniert nicht, und wenn ich den ersten Button betätige kommt immer wieder die meldung die lediglich im tab "labor" angezeigt werden sollte.
tipps was ich falsch gemacht hab?
https://www.herber.de/bbs/user/90580.xlsm

Anzeige
AW: Command button
08.05.2014 19:49:01
Beverly
Dein Button2 ruft das Makro Sub Bereich() auf - dieses Makro enthält aber keinen Code (siehe meinen vorhergehenden Beitrag bzw. deine Mappe Modul1), folglich kann auch nichts "passieren" (mit deinen Worten "es funktioniert nicht")
Beschreibe doch mal genau, wie der Ablauf in deiner Mappe sein soll und was du erreichen willst.
In deinem ersten Beitrag steht nämlich, dass es 1 Button in "Labor" gibt und 1 Button in "controll" - in deiner Mappe sind jedoch beide Button in "controll" und keiner in "Labor".


Anzeige
AW: Command button
08.05.2014 20:22:25
Nou
Meine Buttons sind beide im Tab "Controll" der erste dient als lösch Funktion für das tab "labor".
der zweite button soll mein makro in dem tab "labor" starten dieses makro heißs bereich und ist im tab labor im vba editor hinterlegt, dieses hinterlegte programm soll wie gesagt erst starten wenn ich button 2 drücke.
aber diese meldung für button zwei soll nicht erscheinen wenn ich die löschtaste drücke und momentan erscheint sie.

AW: Command button
08.05.2014 21:04:14
Crazy
Hallo
was bezweckst du eigentlich mit deinen Makros?
Private Sub CommandButton1_Click()
Clear_Sheet
With Worksheets("Labor")
.Range("A:C").Clear
With .Cells(1, 1)
.Value = "Material"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 2)
.Value = "Labor"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 3)
.Value = "Bereich"
.Font.Bold = True
.Interior.Color = vbYellow
End With
.Range("A:C").Columns.AutoFit
End With
End Sub
da rufst du als erstes das Makro "Clear_Sheet" auf
und dieses Makro hat den gleichen Code wie dein Button
also löschst du zweimal!
damit löschst du den Inhalt der Spalten A bis C
danach willst du das Makro Bereich starten das irgendwas eintragen soll
was in dem Blatt in Spalte B steht --> das hast du aber alles gelöscht!
wenn du sicher gehen willst, dass erst der Button1 gedrückt wird dann
dann setz in DieseArbeitsmappe diesen Code
Private Sub Workbook_Open()
Worksheets("Controll").CommandButton2.Enabled = False
End Sub
das würde ich auch noch ins Tabellenblatt "Controll" setzen
Private Sub Worksheet_Activate()
CommandButton2.Enabled = False
End Sub
dann ist der Button erst mal gesperrt
und am Ende von deinem Commandbutton1 Code schreibst du das
CommandButton2.Enabled = True
dann deinen ganzen Code aus dem Laborblatt in dein Makro "Bereich"
und am Ende davon wieder
Worksheets("Controll").CommandButton2.Enabled = False
MfG Tom

Anzeige
AW: Command button
08.05.2014 21:09:38
Beverly
In deinem tab "labor" gibt es kein Makro bereich es gibt nur eine Sub Bereich() im Modul1 und diese rufst du mit deinem Code für den CommandButton auf durch die Zeile Bereich:
Private Sub CommandButton2_Click()
Bereich
End Sub
Was soll in deinem Projekt eigentlich vor sich gehen in den Tabellen "labor" und "controll"? Beschreibe doch mal mit einfachen Worten, was du erreichen willst, nicht was dein gegenwärtiger Code angeblich macht oder nicht macht.


Anzeige
AW: Command button
08.05.2014 21:15:28
Nou
Ich habe eure anweisungen befolgt, jedoch passiert trotdem nichts wenn ich den zweiten button drücke, und wenn ich den lösch button drücke kommt ständig die aufforderung die nur im Tab "labor" erscheinen sollte (Bitte erst Button2 drücken).
ihr könnt ja auf die dateu zugreifen funktioniert es bei euch?

AW: Command button
08.05.2014 21:21:19
Crazy
Hallo
so sieht es bei mir aus
im Tabellenblatt "Controll"
Private Sub CommandButton1_Click()
With Worksheets("Labor")
.Range("A:C").Clear
With .Cells(1, 1)
.Value = "Material"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 2)
.Value = "Labor"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 3)
.Value = "Bereich"
.Font.Bold = True
.Interior.Color = vbYellow
End With
.Range("A:C").Columns.AutoFit
End With
CommandButton2.Enabled = True
End Sub
Private Sub CommandButton2_Click()
Bereich
End Sub
Private Sub Worksheet_Activate()
CommandButton2.Enabled = False
End Sub
im Modul1 das Makro Bereich (was immer da auch stattfinden soll)
Sub Bereich()
With Worksheets("Labor")
Dim lloRow As Long
For lloRow = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Select Case UCase(Range("B" & lloRow).Value)
Case "E01", "E09", "E10", "E11", "E18", "E19", "E26", "E36", "E39", "E42", "E43" _
.Range("B" & lloRow).Offset(0, 1) = "AT"
Case "E12", "E17", "E46", "E47"
.Range("B" & lloRow).Offset(0, 1) = "WS"
Case "E02", "E03", "E07", "E08", "E40", "E41", "E45", "E48"
.Range("B" & lloRow).Offset(0, 1) = "TS"
Case "F01", "E16", "F99"
.Range("B" & lloRow).Offset(0, 1) = "sonstiger"
Case ""
.Range("B" & lloRow).Offset(0, 1) = ""
Case Else
.Range("B" & lloRow).Offset(0, 1) = "nicht bekannt"
End Select
Next
End With
Worksheets("Controll").CommandButton2.Enabled = False
End Sub
MfG Tom

Anzeige
AW: Command button
08.05.2014 21:28:09
Nou
Also ich erläutere mal meinen Code "bereich".
Der Sinn ist es mit dem ersten Button immer mein Tab "Labor " zu leeren um daraufhin in spalte A und B was einzufügen, an diesem PUnkt füllt nun mein Programm automatisch die Spalte C aus.
Ich möchte aber dass er erst ausführt wenn ich den button2 betätige.
Jetzt spielt das ganze bei mir verrückt, die MSgBox sollte nur ím Tab "labor" erscheinen man könnte notfalls auch ganz darauf verzichten, da es jetzt ständig im Tab "control" angezeigt wird.
Sprich mit dem button 2 soll lediglich mein Vba code starten.

AW: Command button
08.05.2014 21:41:19
Beverly
Also ich würde dein Vorhaben so interpretieren:
lösche den Code im Tabellenblatt "Labor" komplett und schreibe folgenden Code ins Tabellenblatt "controll" (für die beiden Button):
Private Sub CommandButton1_Click()
With Worksheets("Labor")
.Range("A:C").Clear
With .Cells(1, 1)
.Value = "Material"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 2)
.Value = "Labor"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 3)
.Value = "Bereich"
.Font.Bold = True
.Interior.Color = vbYellow
End With
.Range("A:C").Columns.AutoFit
End With
End Sub
Private Sub CommandButton2_Click()
Dim lloRow As Long
If Worksheets("Labor").Range("A1") = "Material" Then
For lloRow = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Select Case UCase(Range("B" & lloRow).Value)
Case "E01", "E09", "E10", "E11", "E18", "E19", "E26", "E36", "E39", "E42", "E43"
Range("B" & lloRow).Offset(0, 1) = "AT"
Case "E12", "E17", "E46", "E47"
Range("B" & lloRow).Offset(0, 1) = "WS"
Case "E02", "E03", "E07", "E08", "E40", "E41", "E45", "E48"
Range("B" & lloRow).Offset(0, 1) = "TS"
Case "F01", "E16", "F99"
Range("B" & lloRow).Offset(0, 1) = "sonstiger"
Case ""
Range("B" & lloRow).Offset(0, 1) = ""
Case Else
Range("B" & lloRow).Offset(0, 1) = "nicht bekannt"
End Select
Next
Else
MsgBox "Bitte erst Button1 drücken"
End If
End Sub


Anzeige
AW: Command button
08.05.2014 22:30:53
Nou
ich weiß nicht genau was bei mir falsch läuft, aber wenn ich mein button2 drücke passiert überhaut nichts.
funktioniert es bei dir?

offen weil keine Antwort auf Rückfragen
09.05.2014 08:33:55
Beverly
Die Spalten A:C werden mit Button1 gelöscht und in A1:C1 etwas eingetragen. Somit ist die letzte belegte Zeile in Spalte B, die du mit Cells(Rows.Count, 2).End(xlUp).Row ermittelst immer 1 und deine Schleife läuft von 1 bis 1. Also kann der Code nicht prüfen, was die Zellen in Spalte B enthalten und dann in die Nachbarspalte einen deier Werte aus der Case-Anweisung eintragen.
Da du aber nicht auf meine bereits mehrfach geäußerte Bitte eingehst, mal genau zu beschreiben was du überhaupt erreichen willst, bin ich dann raus, denn ich habe keine Zeit, mir dein Vorhaben selbst auszudenken.


Anzeige
AW: offen weil keine Antwort auf Rückfragen
09.05.2014 08:37:56
Nou
Mein Vorhaben ist immer erst das tabellen blatt "labor" zu löschen um dann händisch was in spalte A und B einzutragen, wo dann mein programm in Spalte C automatisch den gesuchten Bereich ermittelt, das soll nun aber erst die Spalte C ausfüllen wenn ich button 2 betätige.

CommandButton abhängig
09.05.2014 08:51:53
Beverly
Weshalb nicht gleich so?
Die Idee von Tom, den Button zu deaktivieren ist besser, als etwas in eine Zelle zu schreiben, ich habe das in den Code entsprechend eingebaut.
Code im Codemodul des Tabellenblattes "Labor" komplett löschen, folgender Code im Codemodul des Tabellenblattes "controll":
Private Sub CommandButton1_Click()
With Worksheets("Labor")
.Range("A:C").Clear
With .Cells(1, 1)
.Value = "Material"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 2)
.Value = "Labor"
.Font.Bold = True
.Interior.Color = vbYellow
End With
With .Cells(1, 3)
.Value = "Bereich"
.Font.Bold = True
.Interior.Color = vbYellow
End With
.Range("A:C").Columns.AutoFit
End With
ActiveSheet.CommandButton2.Enabled = True
End Sub
Private Sub CommandButton2_Click()
Dim lloRow As Long
For lloRow = 2 To Cells(Rows.Count, 2).End(xlUp).Row
Select Case UCase(Range("B" & lloRow).Value)
Case "E01", "E09", "E10", "E11", "E18", "E19", "E26", "E36", "E39", "E42", "E43"
Range("B" & lloRow).Offset(0, 1) = "AT"
Case "E12", "E17", "E46", "E47"
Range("B" & lloRow).Offset(0, 1) = "WS"
Case "E02", "E03", "E07", "E08", "E40", "E41", "E45", "E48"
Range("B" & lloRow).Offset(0, 1) = "TS"
Case "F01", "E16", "F99"
Range("B" & lloRow).Offset(0, 1) = "sonstiger"
Case ""
Range("B" & lloRow).Offset(0, 1) = ""
Case Else
Range("B" & lloRow).Offset(0, 1) = "nicht bekannt"
End Select
Next
ActiveSheet.CommandButton2.Enabled = False
End Sub


AW: CommandButton abhängig
09.05.2014 08:56:20
Nou
sorry drück mich oft sehr undeutlich aus :(
Ich weiß nicht wo mein Problem ist, aber es tut sich nichts wenn ich auf buttton2 drücke das programm reagiert nicht, nur der löschvorgang funktioniert

AW: CommandButton abhängig
09.05.2014 09:16:21
Beverly
Dann gibt dir bitte künftig Mühe, dein Problem auch für Außenstehende verständlich und nachvollziehbar zu beschreiben - niemand kann in deinen Kopf schauen.
Stimmt, der Bezug zum Tabellenblatt "Labor" fehlt - ändere den Code für den Button2:
Private Sub CommandButton2_Click()
Dim lloRow As Long
With Worksheets("Labor")
For lloRow = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
Select Case UCase(.Range("B" & lloRow).Value)
Case "E01", "E09", "E10", "E11", "E18", "E19", "E26", "E36", "E39", "E42", "E43"
.Range("B" & lloRow).Offset(0, 1) = "AT"
Case "E12", "E17", "E46", "E47"
.Range("B" & lloRow).Offset(0, 1) = "WS"
Case "E02", "E03", "E07", "E08", "E40", "E41", "E45", "E48"
.Range("B" & lloRow).Offset(0, 1) = "TS"
Case "F01", "E16", "F99"
.Range("B" & lloRow).Offset(0, 1) = "sonstiger"
Case ""
.Range("B" & lloRow).Offset(0, 1) = ""
Case Else
.Range("B" & lloRow).Offset(0, 1) = "nicht bekannt"
End Select
Next
End With
ActiveSheet.CommandButton2.Enabled = False
End Sub


AW: Command button
11.05.2014 13:34:22
Nou
Hallo
Mein Programm funktioniert immernoch nicht so richtig ich probiere die ganze zeit rum.
es wird jetzt ständig meine MsgBox angezeigt egal worauf ich klicke und der button zwei funktioniert nicht.
Ich möchte das einfach mein button eins bei drücken auf start meinen inhalt des tabellenblatt "labor" löscht und danach werde ich in meinerm tabellenblatt"labor" händisch spalte A und B ausfüllen daraufhin sollte mein programm automatisch Spalte C anpassen, jedoch möchte ich das Spalte C erst ausgefüllt wird wenn ich auf den Button 2 drücke.
hier nochmal meine exeltabelle.
Ich arbeite im Tab "Control" und Tab "labor", im tab "control" befindet sich mein programm.
kann mir jemand weiterhelfen?
https://www.herber.de/bbs/user/90619.xlsm

AW: Command button
11.05.2014 14:29:31
Beverly
Hi,
also bei mir macht der Code genau das was er soll.
Als Fragesteller sollte man sich die Antworten schon gründlich durchlesen und genau so vorgehen, wie die Helfer das vorgeben. Du musst dich also nicht wundern, dass der Code bei dir nicht funktioniert, weil du die konkreten Hinweise eben nicht berücksichtigst bzw. den Code willkürlich änderst:
1. du hast den Code im Tabellenblatt "Labor" nicht gelöscht
2. du hast aus meinem Code für den Button1 die Zeile ActiveSheet.CommandButton2.Enabled = True gelöscht
3. eine MsgBox wird nicht mehr benötigt, da der Code so umgeschrieben war, dass der Button2 stattdessen deaktiviert wird
https://www.herber.de/bbs/user/90620.xlsm


AW: Command button
11.05.2014 15:08:07
Nou
Vielen vielen dank Karin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige