PDA

View Full Version : Banale problema di Visual Basic - excel


finaldo
16-01-2006, 17:41
ciao! premetto che non sono un programmatore...
ma kiedo a voi luminari!!!
chi è in grado di realizzare una macro in vbasic, che permetta di visualizzare un solo foglio excel a scelta sulla base di una var di input?
se avete idee per risolvere lo stesso problema con metodi + semplici tanto meglio :)
please help

cisky
19-01-2006, 12:59
Puoi creare una macro simile a questa, da inserire nell'evento Activate dell'oggeto wordbook (Exel obj: ThisWordbook)



Private Sub Workbook_Activate()

Dim oSheet As Worksheet
Dim lCounter As Long
Dim sMsg As String
Dim sValue As String
Dim lNumSheetSelect As Long
Dim bOK As Boolean

' *** Se c'è solo un foglio non faccio nulla
If Me.Worksheets.Count <= 1 Then Exit Sub

' *** Scorro tutti i fogli e genero un messaggio da visualizzare all'utente
For Each oSheet In Me.Worksheets
lCounter = lCounter + 1
sMsg = sMsg & lCounter & ") " & oSheet.Name & vbCrLf
Next oSheet

Do While Not bOK ' *** Ciclo finchè l'utente non indica quale foglio usare...

sValue = InputBox(sMsg, "Inserisci il nr° del foglio che vuoi attivare")

bOK = IsNumeric(sValue)

If bOK Then
lNumSheetSelect = Val(sValue)
Else
MsgBox "Devi inserire un numero!"
End If
If bOK Then
If lNumSheetSelect < 1 Or lNumSheetSelect > lCounter Then
bOK = False
MsgBox "Devi inserire un numero (tra 1 e " & lCounter & ")"
End If
End If

Loop

' *** Come prima cosa visualizzo il foglio selezionato dall'utente, perchè deve sempre
' esserci almeno un foglio visibile (altrimenti viene generato un errore)
'
Me.Worksheets(lNumSheetSelect).Visible = xlSheetVisible

' *** Nascondo tutti gli altri fogli
'
lCounter = 0
For Each oSheet In Me.Worksheets

lCounter = lCounter + 1
If lCounter <> lNumSheetSelect Then
oSheet.Visible = xlSheetHidden
End If
Next oSheet

End Sub