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 double click a cell to open a specified worksheet in Excel?

Do you want to quickly navigate to a specified worksheet in an Excel workbook? This article will provide a VBA method to open a specified worksheet by double-clicking a certain cell in Excel.

Double click a cell to open a specified worksheet with VBA code

Office Tab Enable Tabbed Editing and Browsing in Office, and Make Your Work Much Easier...
Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%
  • Reuse Anything: Add the most used or complex formulas, charts and anything else to your favorites, and quickly reuse them in the future.
  • More than 20 text features: Extract Number from Text String; Extract or Remove Part of Texts; Convert Numbers and Currencies to English Words.
  • Merge Tools: Multiple Workbooks and Sheets into One; Merge Multiple Cells/Rows/Columns Without Losing Data; Merge Duplicate Rows and Sum.
  • Split Tools: Split Data into Multiple Sheets Based on Value; One Workbook to Multiple Excel, PDF or CSV Files; One Column to Multiple Columns.
  • Paste Skipping Hidden/Filtered Rows; Count And Sum by Background Color; Send Personalized Emails to Multiple Recipients in Bulk.
  • Super Filter: Create advanced filter schemes and apply to any sheets; Sort by week, day, frequency and more; Filter by bold, formulas, comment...
  • More than 300 powerful features; Works with Office 2007-2019 and 365; Supports all languages; Easy deploying in your enterprise or organization.

Double click a cell to open a specified worksheet with VBA code


Please do as follows to open a specified worksheet by double-clicking a cell in Excel.

1. Right-click the sheet tab which contains the cell you want to open worksheet by clicking on it. And then click View Code from the context menu. See screenshot:

2. In the opening Microsoft Visual Basic for Applications window, please copy the following VBA code into the Code window.

VBA code: double click cell to open a specified worksheet in Excel

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Updated by Extendoffice 20180822
Dim xArray, xAValue As Variant
Dim xFNum As Long
Dim xStr, xStrRg, xStrSheetName As String
xRgArray = Array("A1;Sheet2", "A12;Sheet3", "A4;Sheet4", "A100;Sheet5")
On Error Resume Next
For xFNum = LBound(xRgArray) To UBound(xRgArray)
xStr = ""
xStr = xRgArray(xFNum)
xAValue = ""
xAValue = Split(xStr, ";")
xStrRg = ""
xStrRg = xAValue(0)
xStrSheetName = ""
xStrSheetName = xAValue(1)
If Not Intersect(Target, Range(xStrRg)) Is Nothing Then
Sheets(xStrSheetName).Activate
End If
Next
End Sub

Note: In the VBA code, "A1;Sheet2", "A12;Sheet3", "A4;Sheet4", "A100;Sheet5" mean that doube click cell A1 will open Sheet2, double click A2 will open Sheet3..., please change them based on your needs.

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

From now on, when double clicking cell A1 in current worksheet, the specified worksheet will be activated immediately.


Related Articles:


Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails...
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range...
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns... Prevent Duplicate Cells; Compare Ranges...
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select...
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more...
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments...
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic...
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF...
  • More than 300 powerful features. Supports Office/Excel 2007-2019 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial.
kte tab 201905

Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, 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!
officetab bottom
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.
    Carl · 5 months ago
    Hi Crystal

    I have copied the code and edited according to the name of the worksheets. The code is running but I still cannot open the sheets, what have I done wrong?

    Sub OpenbyDoubleclicking(ByVal Target As Range, Cancel As Boolean)

    Dim xArray, xAvlaue As Variant '
    Dim xFSum As Long
    Dim xStr, xStrRg, xStrSheetname As String
    xRgArray = Array("A3;FTIR", "A4;Viscometer")
    On Error Resume Next
    For xFNum = LBound(xRgArray) To UBound(xRgArray)
    xStr = ""
    xStr = xRgArray(xFNum)
    xAValue = ""
    xAValue = Split(xStr, ";")
    xStrRg = ""
    xStrRg = xAValue(0)
    xStrSheetname = xAValue(1)
    If Not Intersect(Target, Range(xStrRg)) Is Nothing Then _
    Sheets(xStrSheetname).Active
    End If
    Next
    End Sub


    Many thanks
    • To post as a guest, your comment is unpublished.
      crystal · 3 months ago
      Hi Carl,
      In your code, please replace the first line with "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)".
      Thank you for your comment. The entire code should be as follows.

      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Dim xArray, xAValue As Variant
      Dim xFNum As Long
      Dim xStr, xStrRg, xStrSheetName As String
      xRgArray = Array("A3;FTIR", "A4;Viscometer")
      On Error Resume Next
      For xFNum = LBound(xRgArray) To UBound(xRgArray)
      xStr = ""
      xStr = xRgArray(xFNum)
      xAValue = ""
      xAValue = Split(xStr, ";")
      xStrRg = ""
      xStrRg = xAValue(0)
      xStrSheetName = ""
      xStrSheetName = xAValue(1)
      If Not Intersect(Target, Range(xStrRg)) Is Nothing Then
      Sheets(xStrSheetName).Activate
      End If
      Next
      End Sub
  • To post as a guest, your comment is unpublished.
    Neil · 8 months ago
    Hi how can i extend my array? it stucks already and i cannot add more of this because it limits to col 1024 only for that line. pls help

    xRgArray = Array("A2;Sheet2", "A3;Sheet3", "A4;Sheet4", "A5;Sheet5")
    • To post as a guest, your comment is unpublished.
      crystal · 7 months ago
      Hi Neil,
      The code works well in my case even extended my array to Array = Array("A2;Sheet2", "A3;Sheet3", "A4;Sheet4", "A5;Sheet5", "A6;Sheet6").
      Can you tell me your Excel version?
  • To post as a guest, your comment is unpublished.
    James · 1 years ago
    After you get to the desired sheet. Is there a way to copy information from a cell in that sheet and automatically go back to the cell I double clicked on originally in the first sheet?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi James
      You need to manually click the original worksheet tab to back to it. Sorry can't take this into consideration.
  • To post as a guest, your comment is unpublished.
    Guest · 1 years ago
    Is there a way to do multiple codes for one tab? such as clicking on another cell to jump into another worksheet.

    How would that code look like?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Good day,

      The below VBA code can help you to solve the problem. Thanks for your comment.

      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Dim xArray As Variant
      Dim xFNum As Long
      Dim xStr, xStrRg, xStrSheetName As String
      xRgArray = Array("A2;Sheet2", "A3;Sheet3", "A4;Sheet4", "A5;Sheet5")
      On Error Resume Next
      For xFNum = LBound(xRgArray) To UBound(xRgArray)
      xStr = ""
      xStr = xRgArray(xFNum)
      xStrRg = ""
      xStrRg = Left(xStr, 2)
      xStrSheetName = ""
      xStrSheetName = Right(xStr, Len(xStr) - 3)
      If Not Intersect(Target, Range(xStrRg)) Is Nothing Then
      Sheets(xStrSheetName).Activate
      End If
      Next
      End Sub
      • To post as a guest, your comment is unpublished.
        SG · 1 years ago
        Hi, In the line that states xStrRg = Left(xStr, 2), this picks up the cell if its a single number cell i.e. A1, A2, A3. but not if its A11, or A111. how do i write the code to allow me to use cells A1, A11, and A111?

        Hope this makes sense, i'm not particularly technical!!
        • To post as a guest, your comment is unpublished.
          crystal · 1 years ago
          Good Day,
          The code has been optimized again. Please have a try and thanks for your comment.

          Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
          Dim xArray, xAValue As Variant
          Dim xFNum As Long
          Dim xStr, xStrRg, xStrSheetName As String
          xRgArray = Array("A1;Sheet2", "A12;Sheet3", "A4;Sheet4", "A100;Sheet5")
          On Error Resume Next
          For xFNum = LBound(xRgArray) To UBound(xRgArray)
          xStr = ""
          xStr = xRgArray(xFNum)
          xAValue = ""
          xAValue = Split(xStr, ";")
          xStrRg = ""
          xStrRg = xAValue(0)
          xStrSheetName = ""
          xStrSheetName = xAValue(1)
          If Not Intersect(Target, Range(xStrRg)) Is Nothing Then
          Sheets(xStrSheetName).Activate
          End If
          Next
          End Sub