Determinare se esiste una Checkbox su un foglio ed eventualmente eliminarla

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
shadi1978
00giovedì 22 dicembre 2016 16:22
Ciao a tutti,

Ho un form con 3 pulsanti:
2 generano elenchi filtrando un datebase
il 3° oltre a recuperare dati dal datebase, mi inserisce una checkbox sul foglio X con il seguente codice:

ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=7.94117647058824, Top:=15, Width:=105, _
Height:=21.1764705882353).Select


ora se lancio di nuovo il form, avrò sul foglio X la checkbox che elimino così, nel caso non vorrei che mi apparisse sul foglio:

ActiveSheet.Shapes.Range(Array("CheckBox1")).Select
Selection.Delete

(PS. finora sono gli unici codici che sono riuscito a recuperare, uno genera un ActiveX, l'altro elimina una Shape. Se non erro sono oggetti diversi ma per ora il codice così funziona)

IL PROBLEMA E' CHE SE CLIKKO UN QUALSIASI DEI 3 PULSANTI E LA CHECKBOX NON ESISTE IL CODICE VA IN ERRORE XK NON TROVA NULLA

ps: il fatto di sapere o no se é stato creato il controllo dipende dalle scelte dell'utente.

Quello che vorrei è cercare di creare un ciclo IF che mi determini se esiste la checkbox e nel caso la cancella o se non esiste che mi esca dall'errore. Ho provato la seguente soluzione:

Dim SELEZ As CheckBox

On Error Resume Next
Set SELEZ = Controls("CheckBox1")
If Err Then
Err.Clear
Else
ActiveSheet.Shapes.Range(Array("CheckBox1")).Select
Selection.Delete
End If

ma mi dice Sub o Function indefinita su Controls

come posso risolvere?

Grazie
shadi1978
00giovedì 22 dicembre 2016 16:35
ho risolto eliminando la variabile e il set, e scritto come segue fa il suo lavoro

On Error Resume Next
If Err Then
Err.Clear
Else
ActiveSheet.Shapes.Range(Array("CheckBox1")).Select
Selection.Delete
End If


Ora avendo usato On Error se nel codice esistono altri errori me li segnala ancora oppure no?

Ossia rischio di scrivere un codice e non avere più la certezza che sia a posto perchè non posso verificare più l'esistenza di eventuali errori??

grazie
alfrimpa
00giovedì 22 dicembre 2016 17:27
Ciao shadi

Ti propongo questa macro

vb
Sub b()
    Dim obtchkbox As OLEObject
    Dim sh As Worksheet
    Set sh = ActiveSheet
    For Each obtchkbox In sh.OLEObjects
        If TypeName(obtchkbox.Object) = "CheckBox" And obtchkbox.Name = "CheckBox1" Then
            obtchkbox.Delete
        End If
    Next
End Sub


che cerca nel foglio attivo una checkbox denominata "CheckBox1" e se la trova la cancella.
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 04:47.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com