Tip: Other languages are Google-Translated. You can visit the English version of this link.
Log in
x
or
x
x
Register
x

or

How to print certain pages or worksheet based on cell value in Excel?

Have you ever tried to print certain page or worksheet based on a cell value in Excel? And how to achieve it? Methods in this article can help you to solve it in details.

Print certain page based on cell value with VBA code

Print certain worksheet based on cell value with VBA code


arrow blue right bubble Print certain page based on cell value with VBA code


For example, you want a certain page such as page 1 of current worksheet to be printed automatically when entering the page number 1 into cell A1 in current worksheet. You can do as follows to achieve it.

1. Select the cell contains the page number you want to print based on, then press Alt and F11 keys simultaneously to open the Microsoft Visual Basic for Applications window. Then click Insert > Module.

2. Then the Microsoft Visual Basic for Applications window pops up, please copy and paste the following VBA code into the Code window.

VBA code: Print page based on cell value

Option Explicit
Sub Print_Pages()
Dim xPage As Integer
Dim xYesorNo As Integer
With ActiveCell
    If Not IsEmpty(.Value) And IsNumeric(.Value) Then
        xPage = .Value
    Else: MsgBox "Please specify a cell and enter a page in cell"
        Exit Sub
    End If
End With
xYesorNo = MsgBox("Ready to print page" & xPage & " ", vbYesNo, "Kutools for Excel")
If xYesorNo = vbYes Then
    ActiveSheet.PrintOut from:=xPage, To:=xPage, preview:=True
Else
    Exit Sub
End If
End Sub

3. Press F5 key to run the code. In the popping up Kutools for Excel dialog box, click the Yes button to print the certain page, or click the No button to exit the dialog box if you don’t want to print. See screenshot:

Then the preview window of the certain page of current worksheet opens, please click the Print button to start printing.


arrow blue right bubble Print certain page based on cell value with VBA code

Supposing you want to print the active worksheet when value in cell B2 of this sheet equals to number 1001. You can achieve it with the following VBA code. Please do as follows.

1. Right click the Sheet Tab that you want to print based on cell value, and then click View Code from the right-clicking menu.

2. Then the Microsoft Visual Basic for Applications window pops up, please copy and paste the following VBA code into the Code window.

VBA code: Print worksheet based on cell value

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCell As Range, xYesorNo As Integer
Set xCell = ActiveSheet.Range("B2")
If Application.Intersect(Target, xCell) Is Nothing Then Exit Sub
    If xCell.Value = 1001 Then
        xYesorNo = MsgBox("Ready to print the specified worksheet? ", vbYesNo, "Kutools for Excel")
        If xYesorNo = vbYes Then
          ActiveSheet.PrintOut
        Else
           Exit Sub
        End If
End If
End Sub

Note: You can change the cell and cell value in the code as you need.

3. Press Alt + Q to close the Microsoft Visual Basic for Applications window.

When entering number 1001 into cell B2, a Kutools for Excel dialog box pops up, please click the Yes button to start printing. Or click the No button to exit the dialog box directly without printing. See screenshot:

Tip: If you want to directly print non-consecutive pages such as page 1, 6 and 9 in current worksheet, or print only all even or odd pages, you can try the Print Specified Pages utility pf Kutools for Excel as below screenshot shown. You can go to free download the software with no limitation in 60 days.


arrow blue right bubbleRelated articles:



Recommended Productivity Tools for Excel

Kutools for Excel Helps You Always Finish Work Ahead of Time, and Stand Out From Crowd

  • More than 300 powerful advanced features, designed for 1500 work scenarios, increasing productivity by 70%, give you more time to take care of family and enjoy life.
  • No longer need memorizing formulas and VBA codes, give your brain a rest from now on.
  • Become an Excel expert in 3 minutes, Complicated and repeated operations can be done in seconds, 
  • Reduce thousands of keyboard & mouse operations every day, say goodbye to occupational diseases now.
  • 110,000 highly effective people and 300+ world-renowned companies' choice.
  • 60-day full features free trial. 60-day money back guarantees. 2 years of free upgrade and support.

Brings Tabbed Browsing and Editing to Microsoft Office, Far More Powerful Than The Browser's Tabs

  • Office Tab is designed for Word, Excel, PowerPoint and Other Office Applications: Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Ryan · 1 months ago
    This was very helpful! Is there a way to print multiple pages? For example, if cell A1 = 5, print pages 1-5.
    • To post as a guest, your comment is unpublished.
      crystal · 10 days ago
      Hi Ryan,
      If you want to print consecutive pages such as 1-5 in a worksheet based on a cell value, please specify a cell such as A1 as Text formatting, type 1-5 into it, keep this cell selecting, and then run the below VBA code.

      Sub Print_Pages()
      Dim xPage As String
      Dim xYesorNo As Integer
      Dim xI As String
      Dim xPArr() As String
      Dim xIS, xIE, xF, xNum As Integer
      xPage = ActiveCell.Value
      xYesorNo = MsgBox("Ready to print page" & xPage & " ", vbYesNo, "Kutools for Excel")
      If xYesorNo = vbYes Then
      xPArr() = Split(xPage, "-")
      If UBound(xPArr) = 0 Then
      If IsEmpty(xPage) And IsNumeric(xPage) Then
      MsgBox "Please specify a cell and enter a page in cell"
      Exit Sub
      End If
      xNum = Int(xPage)
      ActiveSheet.PrintOut from:=xNum, To:=xNum, preview:=True
      ElseIf UBound(xPArr) = 1 Then
      On Error GoTo Err01
      xIS = Int(xPArr(0))
      xIE = Int(xPArr(1))
      If xIS < xIE Then
      For xF = xIS To xIE
      ActiveSheet.PrintOut from:=xF, To:=xF, preview:=True
      Next
      Else
      For xF = xIE To xIS
      ActiveSheet.PrintOut from:=xF, To:=xF, preview:=True
      Next
      End If
      Else
      MsgBox "Please enter the valid data", vbOKOnly, "Kutools for Excel"
      Exit Sub
      End If
      Else
      Exit Sub
      End If
      Exit Sub
      Err01:
      MsgBox "Please enter the correct page scope", vbOKOnly, "Kutools for Excel"
      End Sub