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.
- 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
- Open the file and enable macros. Windows normally do not allow macros automatically
- Run macro named ‘ShowCellContent’ from the developer tab.
- Open the Excel and select the cell containing text that you want to see in the pop-up window
- 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.
- Use arrow buttons to navigate across cells without closing the tool.
- 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
- 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).
- Open Excel Options
- Launch Excel.
- Go to File → Options.
- 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.
- 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.
- Enable the Add‑In
- Make sure the checkbox next to your add‑in is ticked.
- Click OK.
- The add‑in loads automatically whenever Excel starts.
- 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


