8

我有一个 .csv 格式的文件,并且来自 AS 列,它有一些像表格一样的记录。我的完整程序将插入/删除/删除/添加一些行、列和编辑单元格值等。我设法编写了我需要的所有操作,现在我正在尝试将它与 gui 集成。

我想要的是显示从 Ax1 到在 VBA 用户表单上记录的最后一列的单元格。我怎样才能做到这一点?

*ps:同样,我的文件格式是 .csv,我使用的是 Excel 2007

4

1 回答 1

18

您可以使用多列列表框来显示数据。

逻辑

  1. 在临时表中导入文本 (Csv) 文件
  2. 在多列列表框中显示该数据
  3. 删除 Userform 卸载事件中的临时表

在临时表中导入文本 (Csv) 文件

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

现在您可以在多列列表框中显示该数据。

在多列列表框中显示该数据

我以 3 列和最多 20 列为例。根据需要进行更改

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

截屏

在此处输入图像描述

删除 Userform 卸载事件中的临时表

要删除临时表,请wsTemp在代码顶部声明 ,以便您可以在UserForm_QueryClose事件中访问它。看这个完整的例子

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

高温高压

于 2012-11-23T13:15:04.877 回答