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.
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.
Un grazie anche a tutti gli altri.
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.!
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
per la quale avevo preparato la risposta