Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1292to1296
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 löschen

Button löschen
23.01.2013 10:14:36
Klaus
Hallo VBA-ler,
ich möchte einen Button auf einem Blatt per Makro löschen.
das mache ich momentan so:
ActiveWorkbook.ActiveSheet.Shapes.Range(Array("Cmb_1")).Delete
Das funktioniert auch, aber natürlich nur solange der Button CmB_1 auch da ist! Auf ein "on error resume next" möchte ich gerne verzichten.
Was ich bräuchte wäre (in Pseudocode):
with ActiveWorkbook.ActiveSheet
IF EXISTS [ .Shapes.Range(Array("Cmb_1")) ] THEN
.Shapes.Range(Array("Cmb_1")).Delete
ELSE
'nix
END IF
end with

Wer hilft mir, mein Pseudo in richtigen Code zu übersetzen?
Grüße,
Klaus M.vdT.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button löschen
23.01.2013 11:00:22
Daniel
Hi
vielleicht so:
dim shpe as Shape
for each shpe in Activesheet.Shapes
if shpe.Name = "Cmb_1" then shpe.delete: exit for
next
allerdings wüsste ich nicht, was in diesem Fall gegen ein
On Error resume Next
activesheet.Shapes("Cmb_1").delete
On Error Goto 0 
sprechen würde.
solange sich das On Error Resume Next auf einen einzigen Befehl beschränkt, welcher im normalen Ablauf einen Fehler verursachen kann, ist das völlig OK.
für erste Tests kommentiert man das On Error Resume Next natürlich aus und sorgt dafür, daß ein entsprechender Button vorhanden ist um die Funktion zu prüfen.
Gruß Daniel

Anzeige
Vielen Dank Daniel!
23.01.2013 11:14:56
Klaus
Hallo Daniel,
vielen Dank, die erste Lösung werde ich übernehmen.
Frage zum zweiten Vorschlag (nur für mein Verständniss):
Wenn ich eine Fehlerbehandlungsroutine habe, müsste das dann so aussehen?
sub test
on error goto ErrHndl
[CODE]
On Error resume Next
activesheet.Shapes("Cmb_1").delete
On Error Goto ErrHndl
[CODE]
ErrHndl:
Msgbox("Fehler")
end sub
Grüße,
Klaus M.vdT.

AW: Vielen Dank Daniel!
23.01.2013 11:20:30
Daniel
Hi
solange du für den Hausgebrauch programmierst, würde ich Fehlerbehandlungsroutinen generell weglassen.
Der Hinweis, in welcher Zeile ein Fehler passiert ist sehr hilfreich für eine schnelle Ursachenfindung und -behebung.
ob das jetzt so funktoniert oder ob du erst noch ein On Error Goto 0 zwischenschalten musst, kann ich dir auch nicht so aus dem Stand sagen, probiers doch einfach aus.
Gruß Daniel

Anzeige
Fehlerbehandlung
23.01.2013 11:45:17
Beverly
Hi Klaus,
ich würde dir generell eine Fehlerbehandlung empfehlen, auch wenn es nur für den Hausgebrauch ist, denn das gehört zu einem sauberen Programmierstil.
Nach Möglichkeit sollte man allerdings die Verwendung von On Error Resume Next vermeiden, jedoch ist das nicht in allen Fällen möglich. Wenn man es denn verwendet, sollte man den Fehler auf jeden Fall wieder mit On Error Goto 0 zurücksetzen.
Zu beachten ist bei Verwendung von On Error Resume Next unbedingt, dass man daran denken muss, bei einer Fehlersuche diese Zeile(n) auzukommentieren.
   Dim shaShape As Shape
On Error Resume Next
Set shaShape = ActiveSheet.Shapes("Cmb_1")
On Error GoTo 0
If Not shaShape Is Nothing Then
shaShape.Delete
Else
MsgBox "Nicht vorhanden"
End If
Set shaShape = Nothing


Anzeige
AW: Button löschen
23.01.2013 11:03:18
Beverly
Hi Klaus,
meinst du so:
   Dim shaShape As Shape
Dim blnVorhanden As Boolean
For Each shaShape In ActiveSheet.Shapes
If shaShape.Name = "Cmb_1" Then
blnVorhanden = True
Exit For
End If
Next shaShape
If blnVorhanden Then shaShape.Delete


Auch dir Danke, Beverly!
23.01.2013 11:15:40
Klaus
.. aber Daniels Vorschlag ist etwas kürzer :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige