nascondi sopri colonne

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
patrik01
00sabato 27 febbraio 2016 13:44
Ciao,
queste 2 macro:

Option Explicit

Sub nascondi_colonne()

'ActiveSheet.Unprotect Password:="pippo"

    Columns("D").Hidden = True
    Cells(Rows.Count, 2).End(xlUp).Select
    
    'ActiveSheet.Protect Password:="pippo"

End Sub



Sub scopri_colonne()

'ActiveSheet.Unprotect Password:="pippo"

    'Columns("D").Hidden = False
    Columns("A:AJ").Hidden = False
    Cells(Rows.Count, 2).End(xlUp).Select
 
    'ActiveSheet.Protect Password:="pippo"

End Sub


la prima macro nasconde la colonna D, l'altra la scopre.
Chiedo una modifica:
Alla prima macro un avviso in possa decidere quale colonna nascondere.
Grazie in anticipo.
patrik
locatevaresino
00sabato 27 febbraio 2016 14:49
ciao


Sub nascondi_colonne()

'ActiveSheet.Unprotect Password:="pippo"
Dim colonna As String
colonna = InputBox("quale colonna ")
Columns(colonna).Hidden = True
''Cells(Rows.Count, 2).End(xlUp).Select

'ActiveSheet.Protect Password:="pippo"

End Sub


patrik01
00sabato 27 febbraio 2016 19:20
Ciao locate,
è o.k.
Una curiosità:
una colonna scrivo esempio A
un range scrivo per esempio A:C
e per più colonne non unite tipo A/D/H/L?
Ho provato a separare con la vorgola o due punti ma non funziona.
Un aiuto?
patrik
rollis13
00sabato 27 febbraio 2016 22:16
Per poter liberamente scegliere colonne singole A/D/H/L o multiple A:E/H:O o miste A:C/H/J/M:O puoi provare a modificare la macro così:
Option Explicit

Sub nascondi_colonne()

    Dim colonna As String
    Dim parziale As Variant
    Dim a As Long
    
    'ActiveSheet.Unprotect Password:="pippo"
    colonna = InputBox("quale/i colonna/e ?")
    parziale = Split(colonna, "/")     'puoi cambiare carattere separatore (però non i : )
    For a = 0 To UBound(parziale)
        Columns(parziale(a)).Hidden = True
    Next a
    'ActiveSheet.Protect Password:="pippo"

End Sub
Per quanto riguarda il separatore " / " puoi anche usare uno " " (spazio) se ti viene più facile, basta cambiare nella macro. L'importante che non sia il " : " che già serve per le colonne consecutive.
patrik01
00sabato 27 febbraio 2016 22:27
Ciao rollis13,
è o.k. [SM=g27811]
Un saluto.
patrik
patrik01
00sabato 27 febbraio 2016 22:52
Ciao,
una curiosità.
Come si fa a cambiare il nome dell'inputbox invece di "microsoft excel" esempio "avviso"?
Grazie.
patrik
rollis13
00sabato 27 febbraio 2016 23:15
Quando nella macro inizi a scrivi: colonna=inputbox( ti viene mostrato un popup con la sintassi della funzione. Se vai direttamente nella Guida di Excel (cliccando sul ? ) e cerchi Funzione InputBox avrai a disposizione tutti i suggerimenti utili.
    colonna = InputBox("quale/i colonna/e ?", "Avviso")
patrik01
00domenica 28 febbraio 2016 08:45
Ciao,
grazie rollis. [SM=g27811]
Un grazie anche a tutti gli altri. [SM=g27811]
patrik
patrik01
00domenica 28 febbraio 2016 08:55
Ciao.
E' possibile aggiungere alla macro "nascondi_colonne":

se ci sono colonne nascoste in H1 deve comparire "SI"
se ci sono colonne nascoste in H2 deve comparire "quali sono le colonne".

lo stessa informazione è possibile aggiungerla in una "forma" testo o rettangolo inserita nel foglio?

Un saluto.
patrik
rollis13
00domenica 28 febbraio 2016 15:02
Per rilevare le colonne nascoste puoi usare questa macro ed integrarla per le tue necessità:
Sub rileva_nascoste()

    Dim b As Long
    Dim nascoste As Boolean
    Dim colonna As String
    
    With ActiveSheet
        Range("H1:H2").ClearContents
        For b = 1 To Columns.Count - 1
            If Columns(b).Hidden = True Then
                nascoste = True
                colonna = Split(Columns(b).Address, "$")(2)
                Range("H2") = Range("H2") & colonna & ","
            End If
        Next b
    End With
    If nascoste = True Then
        Range("H1") = "Sì"
    Else
        Range("H1") = "No"
    End If
    
End Sub
Cosa intendi esattamente per "una "forma" testo" ? intendi che compaia ad ogni lancio della macro un box messaggio invece che l'elenco nella cella H2 ?
patrik01
00domenica 28 febbraio 2016 15:39
Ciao rollis,
la tua ultima macro è o.k.! [SM=g27811]
Intendo dire:
ora il messaggio si visualizza nelle celle H1:H2, però se queste le nascondo non si visualizza più questo messaggio.
Ho pensato di aggiungere una "casella/forma di testo" fissa, che non si sposti, in cui compaia il messaggio.
patrik
patrik01
00domenica 28 febbraio 2016 18:23
Ciao,
sono riuscito a inserire il messaggio in due textbox:


----------------------------------------------------------------------
With ActiveSheet
Range("C1:D1").ClearContents
For b = 1 To Columns.Count - 1
If Columns(b).Hidden = True Then
nascoste = True

colonna = Split(Columns(b).Address, "$")(2)

Range("D1") = Range("D1") & colonna & " / "
Foglio9.TextBox2.Text = Range("D1") ' & colonna & "/"

End If
Next b
End With
If nascoste = True Then
'Range("C1") = "Sì"
Foglio9.TextBox1.Text = "ci sono colonne nascoste "
Else

'Range("C1") = "No"
Foglio9.TextBox1.Text = "non ci sono colonne nascoste "
End If

'ActiveSheet.Protect Password:="pippo"

End Sub

----------------------------------------------------------------------

non so è esatto ma mi sembra giri bene.
patrik
rollis13
00domenica 28 febbraio 2016 22:14
Andrebbe vista nell'intero insieme ma se per ora gira ... eventuali sbavature le sistemerai mano a mano che procedi nel realizzare il tuo progetto.
rollis13
00lunedì 29 febbraio 2016 23:11
Devi usare le caratteristiche "Special" delle celle da copiare. Nell'esempio si copia nel Foglio2 le colonne da A ad I del Foglio1 senza le nascoste.
Sub CopiaSoloVisibili()
    
    Columns("A:I").Select
    Selection.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Foglio2").Paste
    
End Sub

Oppss, che fine ha fatto la domanda sul copia/incolla delle colonne senza le nascoste [SM=g27833] per la quale avevo preparato la risposta [SM=g27833]
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 16:26.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com