È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Determinare se esiste una Checkbox su un foglio ed eventualmente eliminarla

Ultimo Aggiornamento: 22/12/2016 17:27
Post: 101
Registrato il: 09/04/2015
Età: 45
Utente Junior
2013
OFFLINE
22/12/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
Post: 101
Registrato il: 09/04/2015
Età: 45
Utente Junior
2013
OFFLINE
22/12/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
Post: 2.506
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
22/12/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.

Alfredo
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
foglio di contabilità (8 messaggi, agg.: 01/11/2017 17:28)
Contabilità Foglio Abbonamenti (3 messaggi, agg.: 17/02/2020 21:42)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 15:34. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com