LORETTA B. forum

Linguaggi di programmazione => Problematiche Excel => Topic aperto da: Tullio - Ottobre 10, 2013, 16:03:42

Titolo: Cella di convalida considerata come forma
Inserito da: Tullio - Ottobre 10, 2013, 16:03:42
Ciao micdas,
eccomi di nuovo perché la sub che cancella le forme (mi sono accorto ieri) che cancella anche le celle di convalida, ma non riesco a capire come si chiamano e quindi come fare per non farle cancellare.
Mi sai dire qualcosa come al solito ?
Ciao. Tullio

Per cancellare le forme utilizzo:
---------------------------------------------
Sub z_FORME()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
  shp.Delete
Next shp
End Sub

---------------------------------------------
Per rendere invisibili le forme utilizzo:
---------------------------------------------
Sub Pulsanti_invisibili()
Dim shp As Shape
Dim nameshp As String
    For Each shp In ActiveSheet.Shapes
   
        If shp.Visible = msoTrue Then
        nameshp = shp.Name
        'Se il nome inizia con "Button"
            If Left(nameshp, 6) = "Button" Then
                'nasconde il pulsante
                shp.Visible = msoFalse
            Else
            End If
        End If
    Next
End Sub

----------------------------------------------
Per ricercare i dati delle forme utilizzo:
-----------------------------------------------
Sub z_nomi_delle_forme()
Dim shp As Shape
Dim conta
conta = 1
    For Each shp In ActiveSheet.Shapes
        Debug.Print "Forma nr." & conta & "  " & shp.Name
        Debug.Print shp.Name
        Debug.Print "da sinistra " & shp.Left
        Debug.Print "finestra    " & shp.Width
        Debug.Print "top         " & shp.Top
        Debug.Print "altezza     " & shp.Height
        Debug.Print "----------------------------"
        conta = conta + 1
    Next

End Sub

-----------------------------------------------
Titolo: Re:Cella di convalida considerata come forma
Inserito da: micdas - Ottobre 10, 2013, 18:47:25
Ciao Tullio,
vedo che oltre la macro  z_FORME () hai altre valide macro per un debug del codice. Per risolvere il problema, se è vero che la  z_FORME () ti cancella anche le celle di convalida ti consiglierei di usare  z_nomi_delle_forme () per vedere se tra gli oggetti che stampi nella finestra immediata riconosci le celle incriminate e notare se queste vengono riconosciute come Shapes.
Se è così, prima di cancellare la forma puoi usare la tecnica che hai usato in Pulsanti_invisibili (): 
Codice: Non sei autorizzato a vedere i links. Registrati o Login
If Left(nameshp, xx) = "yyyyyy" ThenNon ho potuto provare con celle di convalida, ma penso che, se riesci a capire che tali celle vengano individuate come Shapes, possano essere salvate.
Io ho provato con del semplice testo nel foglio e numerosi tipi di Shapes e non è successo nulla di indesiderato.
Ecco come modificherei la sub z_FORME()
Codice: Non sei autorizzato a vedere i links. Registrati o Login
Sub z_FORME()
Dim shp As Shape
Dim nameshp As String
For Each shp In ActiveSheet.Shapes
    nameshp = shp.Name
    If Left(nameshp, x) <> "yyyyyy" Then
        shp.Delete
    End If
Next shp
End Sub
Titolo: Re:Cella di convalida considerata come forma
Inserito da: Tullio - Ottobre 11, 2013, 11:09:13
Ciao micdas,
allora:
la ricerca dei nomi delle forme l'avevo già fatta in quel modo ma non mi dava alcun risultato, però la tua riflessione mi ha fatto considerare una cosa; la selezione della casella! Ebbene  :Felici81: se la casella di convalida è selezionata allora la riconosce anche nel nome e per informazione si chiama "Drop Down" altrimenti non la riconosce però con shp.delete la cancella ugualmente.
Come al solito  :Party133: e grazie.
Tullio
Titolo: Re:Cella di convalida considerata come forma
Inserito da: micdas - Ottobre 11, 2013, 14:27:44
Perfetto   :Amm9: