Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Commandbutton auf Tabellenblatt plötzlich inaktiv

2,010 views
Skip to first unread message

Jürgen Stadermann

unread,
Dec 11, 2014, 2:39:39 PM12/11/14
to
Guten Abend.
Wenn die Arbeitmappe geöffnet wird, wird über Workbook.Open
Userform.Show, die Userform angezeigt.
Diese kann (fallweise) per Userform.Hide (oben rechts) ausgeblendet
werden und man sieht ein Tabellenblatt (von insgesamt 3 ; die sich aber
jeweils anklicken lassen).
Auf jedem Tabellenblatt ("Chorproben", "Auftritte" und "Terminplan").
befindet sich ein Commandbutton,der mir fallweise die Userform wieder
einblendet (Userform1.Show und noch einige andere spezielle Optionen).
Alles hat bis jetzt einwandfrei funktioniert, bei mir und bei meinem
Sangesbruder, der als Geschäftsführer hiermit die Anwesenheiten
prozentual auswertet und festhält.
So, heute sagte er mir-und zeigte es mir, das er per Commandbutton auf
dem Tabellenblatt, die Userform nicht mehr aufrufen kann. Nach Klick
zeigt sich keine Reaktion.
Ich teste diese Arbeitsmappe derzeitig auf meinem Laptop und kann kein
auffälliges Verhalten feststellen, d.h. bei mir klappt alles einwandfrei.

Ich arbeite mit Windows7 Sp.1 und Excel2010.
Mein Sangesbruder mit Win8.1 und Excel2013.

Er sagte mir aber auch, dass diese Auffälligkeit auftrat, nachdem er die
letzten Patches von MS installiert hat.
Ich sagte ihm, er soll mal bei Excel 2013 unter Sicherheitsoptionen
nachsehen; wobei es mich jedoch verwundert, dass die Arbeitsmappe mit
der Userform beim ersten Aufruf aktiviert wird.

Auch kann ich vom VBA-Editor per Userform.Initiale diese aufrufen.
Auch der Code zum Commandbutton (auf dem Tabellenblatt) ist nicht verändert.

Mit der Bitte, um Antwort(en).

Danke schonmal
Jürgen










---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
http://www.avast.com

Claus Busch

unread,
Dec 11, 2014, 2:42:45 PM12/11/14
to
Hallo Jürgen,

Am Thu, 11 Dec 2014 20:32:15 +0100 schrieb Jürgen Stadermann:

> Ich arbeite mit Windows7 Sp.1 und Excel2010.
> Mein Sangesbruder mit Win8.1 und Excel2013.

die Ursache sind die gestrigen Updates. Es muss nicht bei jedem
auftreten, aber ich habe jetzt schon einige Fehlermeldungen gelesen.
Für xl2010 und xl2013 deinstalliere bei den installierten Updates den
Patch KB2553154


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional

Claus Busch

unread,
Dec 11, 2014, 2:53:27 PM12/11/14
to
Hallo Jürgen,

Am Thu, 11 Dec 2014 20:42:41 +0100 schrieb Claus Busch:

>> Ich arbeite mit Windows7 Sp.1 und Excel2010.
>> Mein Sangesbruder mit Win8.1 und Excel2013.
>
> die Ursache sind die gestrigen Updates. Es muss nicht bei jedem
> auftreten, aber ich habe jetzt schon einige Fehlermeldungen gelesen.
> Für xl2010 und xl2013 deinstalliere bei den installierten Updates den
> Patch KB2553154

ich konnte zuerst bei xl2010 auch keine Fehler entdecken. Aber dann habe
ich beim Einfügen von ActiveX-Steuerelementen gemerkt, dass diese mit
der Nummer 21 und aufwärts eingefügt werden, also nicht mehr mit
CommandButton1 usw.

Peter Kraeft

unread,
Dec 19, 2014, 2:39:34 PM12/19/14
to
Hallo
Ich hatte auch diese Problem mit den Commandbutton. Beibmir hat es geholfen indem ich ActiveSheet. benutzt habe.
Gruß Peter

Peter Kraeft

unread,
Dec 22, 2014, 5:45:18 AM12/22/14
to
Hallo Claus,

kannst Du mir das mit der "21" etwas näher beschreiben. Wie kann ich denn überprüfen wie meine CmdB jetzt heißen?
Ich hatte das Problem ja auch
With Sheets(4)
.CmdButton1.Top = neuePos
.CmdButton1.Visible = True
End With

hier wurde der neue Top-Wert nicht übernommen. Der CmdB erschien an alter Stelle

So klappt es
ActiveSheet.Shapes("CmdButton1").Top = neuePos
ActiveSheet.Shapes("CmdButton1").Visible = True

Gruß
Peter

Claus Busch

unread,
Dec 22, 2014, 6:17:25 AM12/22/14
to
Hallo Peter,

Am Mon, 22 Dec 2014 02:45:17 -0800 (PST) schrieb Peter Kraeft:

> kannst Du mir das mit der "21" etwas näher beschreiben. Wie kann ich denn überprüfen wie meine CmdB jetzt heißen?
> Ich hatte das Problem ja auch

das Problem kam mit dem Dezember-Patchday. ActiveX-Steuerelemente
konnten nicht eingefügt und auch nicht mehr betätigt werden.
Du kannst dann das betreffende Patch löschen, damit alles funktioniert
oder wenn du dieses Sicherheitspatch unbedingt behalten willst, kannst
du stattdessen sämtliche .exd-Dateien löschen.
Wenn du diese Dateien löschst, funktioniert scheinbar alles wie gehabt.
Allerdings wird beim Einfügen eines ActiveX-Steuerelementes dieses nicht
mehr mit 1 beziffert sondern das Indizieren beginnt mit 21.
Füge mal einen CommandButton ein. Caption und Name sind so lange nichts
geändert wurde gleich. Was steht dann auf dem Button?
CommandButton1 oder eine andere Zahl? Du kannst den Index der
Steuerelemente auch in deren Eigenschaftenfenster auslesen und auch
ändern.
Die Bezeichnung für das Sicherheitspatch ist versionsabhängig.
Für xl2007 ist es KB2596927
Für xl2010 und 2013 KB2553154

Peter Kraeft

unread,
Dec 22, 2014, 6:44:59 AM12/22/14
to
Hallo Claus
>geändert wurde gleich. Was steht dann auf dem Button?
>CommandButton1 oder eine andere Zahl? Du kannst den Index der
>Steuerelemente auch in deren Eigenschaftenfenster auslesen und auch
>ändern.

Dieses Problem ist erst mit dem Umstieg auf 2013 aufgetreten. Der Button(CmdButton1) ist mit "CmdButton1.Visible = False" ausgeblendet. Es erfolgt die Berechnung des neuen TOP-Wertes und dann wird er wieder eingeblendet. Und hier ist das Problem der TOP-Wert wird nicht richtig übergeben. CmdButton1 erscheint an der alten Stelle. Wenn ich es mit ActiveSheet übergebe klappt es.
Mit der .exd hatten wir auch Probleme da gab es Laufzeitfehler 438. Das ist aber durch löschen von .exd und einer MSForms.exd(die noch funktionierte)beseitigt.

Viele Grüße
Peter

Peter Kraeft

unread,
Dec 22, 2014, 6:50:56 AM12/22/14
to
Hallo Claus,

ich habe mal einen Neuen eingefügt. Der hat jetzt auch die Bezeichnung CommandButton21. Der "Alte" hat seinen Namen nicht geändert. Konnte ich auch mit den Eigenschaften und Makroaufzeichnung überprüfen

Gruß
Peter

Claus Busch

unread,
Dec 22, 2014, 6:58:54 AM12/22/14
to
Hallo Peter,

Am Mon, 22 Dec 2014 03:44:57 -0800 (PST) schrieb Peter Kraeft:

> Dieses Problem ist erst mit dem Umstieg auf 2013 aufgetreten. Der Button(CmdButton1) ist mit "CmdButton1.Visible = False" ausgeblendet. Es erfolgt die Berechnung des neuen TOP-Wertes und dann wird er wieder eingeblendet. Und hier ist das Problem der TOP-Wert wird nicht richtig übergeben. CmdButton1 erscheint an der alten Stelle. Wenn ich es mit ActiveSheet übergebe klappt es.
> Mit der .exd hatten wir auch Probleme da gab es Laufzeitfehler 438. Das ist aber durch löschen von .exd und einer MSForms.exd(die noch funktionierte)beseitigt.

ich weiß nicht, ob sich der Fehler auf die ActiveX-Elemente beschränkt.
Mit ist auch ein Fall bekannt, bei dem eine korrekte und immer
funktionierende Syntax auf einmal nicht mehr läuft.
Er will Mails über Excel verschicken und hat da immer mit

With objMail
.to = [AE5]
.subject = [AE6]

gearbeitet. Das ist korrekt und funktioniert in 2007 immer noch. In 2013
muss er jetzt die Werte an eine Variable übergeben und dann auf diese
Variablen zugreifen:

Empfänger = [AE5]
Betreff = [AE6]
With objMail
.to = Empfänger
.Subject = Betreff

Der Fehler ist weitergemeldet, allerdings ist noch kein Datum bekannt,
an welchem das behoben wird. Jetzt ist Weihnachten und Neujahr. Da denke
ich, dass es mindestens noch bis Patchday Januar dauert.
Ich habe bei mir die Updates eingestellt, dass sie automatisch
heruntergeladen werden und ich den Zeitpunkt der Installation selbst
bestimme. Da die letzten beiden Patchdays nicht jeweils ein Fehler
eingebaut wurde, warte ich dann zwei Tage, ob irgendwo ein Fehler
gemeldet wird bevor ich installiere.

Peter Kraeft

unread,
Dec 22, 2014, 7:19:21 AM12/22/14
to
Hallo Claus,

an den Variablen kann es bei mir ja auch noch hängen:-( Aber da es mit ActiveSheet klappt soll es mich erst einmal nicht weiter stören.

Bei meinem Mailsenden habe ich ja glück, dass ich es so gelöst habe.
.To = send
.Subject = xlSubjectCell.Text & " Stand vom: " & xlBodyCell1.Text
.Body = "Hier die Änderungen vom " & xlBodyCell1.Text & " für "

Gruß
Peter

Peter Kraeft

unread,
Dec 22, 2014, 7:22:27 AM12/22/14
to
Hallo Jürgen,

hast Du es einmal mit ActiveSheet probiert?

Claus wollte ich natürlich noch fragen ob es Nachteile mit ActiveSheet gibt? Der Button kann doch nur im ActiveSheet gedrückt werden, oder?

Gruß
Peter

Claus Busch

unread,
Dec 22, 2014, 7:24:51 AM12/22/14
to
Hallo Peter,

Am Mon, 22 Dec 2014 04:19:20 -0800 (PST) schrieb Peter Kraeft:

> an den Variablen kann es bei mir ja auch noch hängen:-( Aber da es mit ActiveSheet klappt soll es mich erst einmal nicht weiter stören.

du müsstest aber den Commandbutton mit seinem Namen in der Syntax
ansprechen können, z.B.:
ActiveSheet.CommandButton21.Top = 100
und nicht den Umweg über Shapes machen müssen.

Claus Busch

unread,
Dec 22, 2014, 7:29:54 AM12/22/14
to
Hallo Peter,

Am Mon, 22 Dec 2014 04:22:25 -0800 (PST) schrieb Peter Kraeft:

> Claus wollte ich natürlich noch fragen ob es Nachteile mit ActiveSheet gibt? Der Button kann doch nur im ActiveSheet gedrückt werden, oder?

es gibt keine Nachteile von ActiveSheet, wenn sichergestellt ist, dass
das Sheet auch wirklich aktiv ist.
Aber es muss auch mit dem Blatt-Index funktionieren.
Bei mir in xl2007 funktioniert einwandfrei
Sheets(1).CommandButton21.Top=100
Wenn bei dir das Blatt wirklich das 4. Blatt ist, scheint dieser
Patch-Fehler auch auf die Syntax eine Auswirkung zu haben.

Peter Kraeft

unread,
Dec 22, 2014, 8:06:01 AM12/22/14
to
Hallo Claus,
>du müsstest aber den Commandbutton mit seinem Namen in der Syntax
>ansprechen können, z.B.:
>ActiveSheet.CommandButton21.Top = 100
>und nicht den Umweg über Shapes machen müssen.

es funktioniert leider ohne Shapes bei mir nicht. Es sind mehrere Blätter die den Button enthalten und die werden über Sheet(var) aufgerufen. Die Variable wird über Sheet.Index ausgelesen und dann übergeben. Eventuell gibt es da ja doch auch Probleme mit den Variablen. Das Problem bei der Tabelle ist auch dass sie von einem Kollegen erstellt wurde ich sie jetzt etwas "pflege" und wir beide habe VBA nicht studiert. Da kann es natürlich auch an anderen Dingen hängen.

Gruß

Claus Busch

unread,
Dec 22, 2014, 8:21:47 AM12/22/14
to
Hallo Peter,

Am Mon, 22 Dec 2014 05:06:01 -0800 (PST) schrieb Peter Kraeft:

> es funktioniert leider ohne Shapes bei mir nicht. Es sind mehrere Blätter die den Button enthalten und die werden über Sheet(var) aufgerufen. Die Variable wird über Sheet.Index ausgelesen und dann übergeben. Eventuell gibt es da ja doch auch Probleme mit den Variablen. Das Problem bei der Tabelle ist auch dass sie von einem Kollegen erstellt wurde ich sie jetzt etwas "pflege" und wir beide habe VBA nicht studiert. Da kann es natürlich auch an anderen Dingen hängen.

ich würde den Button nicht wandern lassen, sondern ihn im oberen Teil in
einem fixierten Bereich belassen und das Blatt wandern lassen.
Mit:

Private Sub Worksheet_Activate()
ActiveWindow.ScrollRow = Cells(Rows.Count, 1).End(xlUp).Row - 5
End Sub

siehst du beim Aktivieren des Blattes die fixierten Zeilen + die 6
letzten auf dem Blatt.

Peter Kraeft

unread,
Dec 23, 2014, 4:36:24 AM12/23/14
to
Hallo Claus
>ich würde den Button nicht wandern lassen, sondern ihn im oberen Teil in
>einem fixierten Bereich belassen und das Blatt wandern lassen.

bei Eingaben auf dem Blatt soll ja der Botton an der Stelle der Eingabe erscheinen, damit man mit der Maus nicht soviel Bewegungen machen muss. Ist ein
Gimmick aber mit ActiveSheet und Shape läuft es jetzt ja und ich habe noch keine nachteiligen Auswirkungen feststellen können

Gruß
Peter
0 new messages