How To Display Part of Excel on VBA Form

calendar_today Asked Nov 23, 2012
thumb_up 13 upvotes
history Updated April 16, 2026

Question posted 2012 · +4 upvotes

I have a file on .csv format and from A-S columns, it has some records like a table. My complete program will insert/remove/delete/add some rows, columns and editing cell values etc. I managed to code all the operations that i need, now i’m trying to integrate it with a gui.

What I want is to display cells from Ax1 to the last column that has record on VBA user form. How can i do that?

*ps: again, my file’s format is .csv and I am using Excel 2007

Accepted answer +13 upvotes

You can use a multi column Listbox to show the data.

LOGIC

  1. Import the text (Csv) file in the temp sheet
  2. Show that data in the multicolumn Listbox
  3. Delete the temp sheet in the Userform unload event

Import the text (Csv) file in the temp sheet

Private Sub CommandButton1_Click()
    Dim wb As Workbook, wbTemp As Workbook
    Dim wsTemp As Worksheet

    Set wb = ThisWorkbook
    Set wbTemp = Workbooks.Open("C:MyCsv.Csv")

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count)

    Set wsTemp = ActiveSheet

    wbTemp.Close SaveChanges:=False
End Sub

And now you can display that data in a multicolumn listbox.

Show that data in the multicolumn Listbox

I am taking an example of 3 Columns and up till tow 20. Change as applicable

Private Sub CommandButton1_Click()
    Dim wb As Workbook, wbTemp As Workbook
    Dim wsTemp As Worksheet

    Set wb = ThisWorkbook
    Set wbTemp = Workbooks.Open("C:MyCsv.Csv")

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count)


    Set wsTemp = ActiveSheet

    wbTemp.Close SaveChanges:=False

    With ListBox1
        .ColumnCount = 3
        .ColumnWidths = "50;50;50"
        .RowSource = wsTemp.Range("A1:C20").Address
    End With
End Sub

SCREENSHOT

enter image description here

Delete the temp sheet in the Userform unload event

To Delete the temp sheet, declare the wsTemp on the top of the code so that you can access that in the UserForm_QueryClose event. See this complete example

Option Explicit

Dim wsTemp As Worksheet

Private Sub CommandButton1_Click()
    Dim wb As Workbook, wbTemp As Workbook


    Set wb = ThisWorkbook
    Set wbTemp = Workbooks.Open("C:MyCsv.Csv")

    wbTemp.Sheets(1).Copy After:=wb.Sheets(wb.Sheets.Count)


    Set wsTemp = ActiveSheet

    wbTemp.Close SaveChanges:=False

    With ListBox1
        .ColumnCount = 3
        .ColumnWidths = "50;50;50"
        .RowSource = wsTemp.Range("A1:C20").Address
    End With
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Application.DisplayAlerts = False
    wsTemp.Delete
    Application.DisplayAlerts = True
End Sub

HTH

3 code variants in this answer

  • Variant 1 — 13 lines, starts with Private Sub CommandButton1_Click()
  • Variant 2 — 20 lines, starts with Private Sub CommandButton1_Click()
  • Variant 3 — 30 lines, starts with Option Explicit

Excel VBA objects referenced (5)

  • Application — Using events with the Application object
  • Application — Working with Other Applications
  • Range — Refer to Cells by Using a Range Object
  • Range — Delete Duplicate Entries in a Range
  • Sheets.Count — Count function (Microsoft Access SQL)

Top excel-vba Q&A (6)

+13 upvotes ranks this answer #39 out of 136 excel-vba solutions on this site .