Excel VBA Popup Cell Viewer – View Long Text Easily with free Add-in

Excel VBA Popup Cell Viewer – View Long Text Easily with free Add-in

Excel VBA Popup Cell Viewer – View Long Text Easily with free Add-in

Introduction

If you’ve ever worked with Excel, you know the frustration: some cells contain long text strings, notes, or imported data that don’t fit neatly into the grid. To read them, you either expand the formula bar or resize the cell — both of which disrupt your workflow and sheet layout.

To solve this, I built a VBA-powered popup tool that lets you view the full content of any cell instantly. No resizing, no scrolling in the formula bar — just a clean popup window with navigation controls.

The Problem

  • Formula bar limitation: Long text requires expanding the bar, which isn’t convenient.
  • Cell resizing: Adjusting row height or column width distorts the sheet layout.
  • Repeated effort: Each time you move to another cell, you must repeat the process.

For users dealing with comments, logs, or imported text data, this becomes a daily annoyance.

The Solution: Popup Cell Viewer

This VBA tool creates a UserForm that displays the selected cell’s content in a popup window. It comes with navigation buttons so you can move across cells without closing or re-running the macro.

Key Features

  • 📌 Navigation buttons: Move up, down, left, or right across cells directly from the tool.
  • 📌 Dynamic resizing: Expand or contract the popup window as needed.
  • 📌 Column validation: Ensures valid references and avoids errors.
  • 📌 Clean interface: Captions update automatically to show the current cell address

This is how it looks when the Pop-up Cell Viewer is in Action

How It Works

The program uses a combination of VBA procedures and a UserForm:

  • Navigation buttons (upbtn, dnbtn, leftbtn, rightbtn): Move the active cell and refresh the popup.
  • UserForm_Initialize: Loads the selected cell’s content when the form opens.
  • Resize controls: Buttons to expand or contract the popup window dynamically.

How to Use

Primarily this is developed in Excel VBA and saved as Macro enabled workbook (.xlsm). Please note that this was done for education purpose only. You are free to modify to fit your purpose. The xlsm and the add-in are ditributed under GPL 3.0 License

  1. Open the file and enable macros. Windows normally do not allow macros automatically
  2. Run macro named ‘ShowCellContent’ from the developer tab.
  3. Open the Excel and select the cell containing text that you want to see in the pop-up window
  4. Click on the Refresh button (~) on the bottom right corner of the pop-up Window. This will show the contents of the cell in the pop-up window.
  5. Use arrow buttons to navigate across cells without closing the tool.
  6. You can download the xlsm version from the following link

Use it through Excel Add-in

There is another way to use it. I have also packaged the program as an excel Add-in. You may install the Add-in and it will create another Tab in the ribbon called “My Tools”. Here are the steps to install and use the program in plugin mode

Step‑by‑Step: Installing an Add‑In

  1. Save the Add‑In File
    • Make sure your macro workbook has been saved as an add‑in (.xlam).
    • Place it in a location users can access (local drive or shared network folder).
  2. Open Excel Options
    • Launch Excel.
    • Go to File → Options.
  3. Go to Add‑Ins Manager
    • In the left panel, select Add‑Ins.
    • At the bottom, in the Manage dropdown, choose Excel Add‑Ins and click Go.
  4. Browse for Your Add‑In
    • In the Add‑Ins dialog, click Browse.
    • Navigate to your .xlam file and select it.
    • It will now appear in the list of available add‑ins.
  5. Enable the Add‑In
    • Make sure the checkbox next to your add‑in is ticked.
    • Click OK.
  6. The add‑in loads automatically whenever Excel starts.
  7. You can download the Add-In from GitHub from this link

When the Add-in is installed, it will add a Tab called My Tools. “Cell Viewer” is the tool

Going Deeper

A VBA FORM was created as the picture above. The FORM module has the following codes. Finally, a Module is created and That modules launches the form when Cell Viewer

Sub CheckColumnAndUpdateLabel()
    Dim ws As Worksheet
    Dim colName As String
    Dim currentRow As Long
    Dim cellValue As Variant
    Dim selectedCell As Range

    Set ws = ActiveSheet

    ' Ensure only one cell is selected
    If Selection.Cells.Count > 1 Then
        MsgBox "Please select only one cell.", vbExclamation, "Selection Error"
        Exit Sub
    End If

    Set selectedCell = Selection
    currentRow = selectedCell.Row

    ' Check if checkbox 'usecol' is checked
    If Me.showCell.Value = True Then
        colName = Trim(Me.ColumnName.Value)

        ' Validate column name
        If Not IsValidColumnName(colName) Then
            MsgBox "Invalid column name: " & colName, vbCritical, "Column Error"
            Exit Sub
        End If

        On Error GoTo InvalidCell
        cellValue = ws.Range(colName & currentRow).Value
        Me.cellVal.Caption = UCase(colName) & currentRow & " : " & cellValue
        Exit Sub

InvalidCell:
        MsgBox "Error accessing cell " & colName & currentRow, vbCritical, "Cell Error"
    End If
End Sub

Function IsValidColumnName(colName As String) As Boolean
    Dim colNum As Long
    On Error GoTo Invalid
    colNum = Range(colName & "1").Column
    IsValidColumnName = True
    Exit Function
Invalid:
    IsValidColumnName = False
End Function
Function IsValidcell(colName As String) As Boolean
    Dim colNum As Long
    On Error GoTo Invalid
    colNum = Range(colName).Column
    IsValidcell = True
    Exit Function
Invalid:
    IsValidcell = False
End Function





Private Sub btnDone_Click()
    On Error GoTo showerr
    
    CheckColumnAndUpdateLabel
    Me.txtContent = ActiveCell.Text
    Me.Caption = "Content Viewer: Cell : " & Selection.Address(False, False) ' Shows A1 instead of $A$1

    Exit Sub
showerr:
    MsgBox ("Please retry launching")
End Sub


Private Sub dnbtn_Click()
    On Error GoTo showerr
    
    ActiveCell.Offset(1, 0).Select
    CheckColumnAndUpdateLabel
    Me.txtContent = ActiveCell.Text
    Me.Caption = "Content Viewer: Cell : " & Selection.Address(False, False) ' Shows A1 instead of $A$1

    Exit Sub
showerr:
    MsgBox ("Nowhere to move this direction")
End Sub





Private Sub leftbtn_Click()
    On Error GoTo showerr
    
    ActiveCell.Offset(0, -1).Select
    CheckColumnAndUpdateLabel
    Me.txtContent = ActiveCell.Text
    Me.Caption = "Content Viewer: Cell : " & Selection.Address(False, False) ' Shows A1 instead of $A$1

    Exit Sub
showerr:
    MsgBox ("Nowhere to move this direction")
End Sub

Private Sub rightbtn_Click()
    On Error GoTo showerr
        
    ActiveCell.Offset(0, 1).Select
    CheckColumnAndUpdateLabel
    Me.txtContent = ActiveCell.Text
    Me.Caption = "Content Viewer: Cell : " & Selection.Address(False, False) ' Shows A1 instead of $A$1

    Exit Sub
showerr:
    MsgBox ("Nowhere to move this direction")
End Sub

Private Sub showCell_Click()
    CheckColumnAndUpdateLabel
End Sub

Private Sub upbtn_Click()
    On Error GoTo showerr
    
    ActiveCell.Offset(-1, 0).Select
    CheckColumnAndUpdateLabel
    Me.txtContent = ActiveCell.Text
    Me.Caption = "Content Viewer: Cell : " & Selection.Address(False, False) ' Shows A1 instead of $A$1

    Exit Sub
showerr:
    MsgBox ("Nowhere to move this direction")
End Sub

Private Sub UserForm_Initialize()


    'Dim hWnd As LongPtr
    'hWnd = FindWindowA(vbNullString, Me.Caption)
    'If hWnd <> 0 Then
        'Dim style As LongPtr
        'style = GetWindowLongPtr(hWnd, GWL_STYLE)
        'style = style Or WS_THICKFRAME
        'SetWindowLongPtr hWnd, GWL_STYLE, style
    'End If



    If TypeName(Selection) = "Range" And Selection.Cells.Count = 1 Then
        Me.Caption = "Content Viewer: Cell : " & Selection.Address(False, False) ' Shows A1 instead of $A$1
        
    
        With Me.txtContent
            CheckColumnAndUpdateLabel
            .Text = ActiveCell.Text
        End With
    Else
        MsgBox "Please select a single cell.", vbExclamation, "Selection Error"
    End If

End Sub


Private Sub UserForm_Resize()
    With Me.txtContent
        .Width = Me.InsideWidth - 20
        .Height = Me.InsideHeight - 50
    End With
End Sub


Private Sub btnExpand_Click()
    Me.Width = Me.Width + 20
    Me.Height = Me.Height + 20
    reposition

   
End Sub
Private Sub btncontract_Click()
    Me.Width = Me.Width - 20
    Me.Height = Me.Height - 20
    reposition

   
End Sub

Private Sub reposition()

    With Me.btncontract
        '.Top = Me.InsideHeight - .Height - 0
        .Left = Me.InsideWidth - .Width - 45
    End With
    With Me.btnExpand
            '.Top = Me.InsideHeight - .Height - 0
            .Left = Me.InsideWidth - .Width - 20
    End With
    With Me.Label3
                .Top = Me.InsideHeight - .Height - 10
    End With
    
    With Me.ColumnName
                .Top = Me.InsideHeight - .Height - 10
    End With
    With Me.Label2
                .Top = Me.InsideHeight - .Height - 10
    End With
    With Me.showCell
                .Top = Me.InsideHeight - .Height - 10
    End With
    With Me.cellVal
                .Top = Me.InsideHeight - .Height - 10
    End With
    With Me.leftbtn
                .Top = Me.InsideHeight - .Height - 15
    End With
     With Me.rightbtn
                .Top = Me.InsideHeight - .Height - 15
    End With
     With Me.upbtn
                .Top = Me.InsideHeight - .Height - 25
    End With
     With Me.dnbtn
                .Top = Me.InsideHeight - .Height - 5
    End With
     With Me.btnDone
                .Top = Me.InsideHeight - .Height - 10
                .Left = Me.InsideWidth - .Width - 20
    End With
 
    
    
    
    
    

End Sub



Conclusion

This tool is a small but powerful productivity booster for anyone who spends time in Excel. By eliminating the need to resize cells or expand the formula bar, it makes working with long text effortless.

If you find this useful, share it with colleagues or leave a comment below — and stay tuned for more practical Excel and VBA tips here at deepsonline.com.

You can download the Add-In from GitHub from this link

You can download the xlsm version from the following link

Author

  • Pranab

    An IT veteran with over 30 years of experience across systems, software, and digital workflows. His mission is simple: to help people navigate technology with ease. Pranab shares practical, simplified tips that make tech more accessible and less intimidating.