Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao essegi75,
sto programmando un file excel con diversi FOGLI e ogni foglio composto da più pagine, però vorrei realizzare una macro che mi permetta di stampare solo 1 o più pagine di un determinato foglio di lavoro.
In particolare mi interessa programmare una macro che quando clicco il comando mi fa aprire una message box che mi propone il range di pagine da stampare.
Es.
QUALI PAGINE VUOI STAMPARE?
Stampa pagine da ____ a _____
STAMPA ANNULLA
Credo che que la soluzione più appropriata sia quella di sfruttare una semplice Userform. Quindi, prova qualcosa del genere:
- Alt+F11 per aprire l'editor di VBA
- Alt+IUper creare una nuova Userform
- Sulla Userform, inserisci ovunque gli seguenti oggetti:
- 2 x oggetti TextBox
- 2 x oggetti CommabButton
- 2 x oggetti Label
Non preoccupati sia per le dimiensioni degli oggetti che la loro posizioni perchè ci ho pensato io nel codice qui sotto!
Nel modulo di codice della Userform, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Private Sub UserForm_Initialize()
With Me
.Caption = "QUALI PAGINE VUOI STAMPARE?"
.Width = 170
.Height = 95
With Label1
.Top = 6
.Left = 40
.Width = 108
.Height = 18
.Caption = "Stampa pagine da:"
End With
With Label2
.Top = 24
.Left = 66
.Width = 12
.Height = 18
.Caption = "a"
End With
With .TextBox1
.Top = 24
.Left = 18
.Width = 42
.Height = 18
End With
With .TextBox2
.Top = 24
.Left = 82
.Width = 42
.Height = 18
End With
With .CommandButton1
.Top = 48
.Left = 45
.Width = 50
.Height = 18
.Caption = "STAMPA"
End With
With .CommandButton2
.Top = 54
.Left = 110
.Width = 50
.Height = 18
.Caption = "ANULLA"
End With
End With
End Sub
'--------->>
Private Sub CommandButton1_Click()
Dim iStart As Long, iEnd As Long
On Error Resume Next
With Me
iStart = CLng(.TextBox1.Value)
iEnd = CLng(.TextBox2.Value)
End With
On Error GoTo 0
If CBool(iStart) And CBool(iEnd) Then
ActiveSheet.PrintOut From:=iStart, _
To:=iEnd, _
Copies:=1, _
Preview:=False
Unload Me
Else
Call MsgBox( _
Prompt:="Devi precisare le pagine da stampare!", _
Buttons:=vbInformation, _
Title:="REPORT")
End If
End Sub
'--------->>
Private Sub CommandButton2_Click()
Unload Me
End Sub
'<<=========
- Alt+IM per inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice: '=========>>
Option Explicit
'--------->>
Public Sub Tester()
UserForm1.Show vbModeless
End Sub
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel
- Salva il file con l’estensione xlsm
- Alt+F8 per aprire la finestra di gestione delle macro
- Seleziona Tester | Esegui
Eseguendo la macro Tester, dovresti vedere qualcosa del genere:
Potresti scaricare il mio file di prova Essegi20170110.xlsm a:
https://www.dropbox.com/s/wypmxrj2brwetxh/Essegi20170110.xlsm?dl=0
===
Regards,
Norman