8

.csv 形式のファイルがあり、AS 列から、テーブルのようなレコードがいくつかあります。私の完全なプログラムは、いくつかの行、列、およびセル値の編集などを挿入/削除/削除/追加します。必要なすべての操作をコーディングすることができました。

私が欲しいのは、Ax1 から VBA ユーザー フォームにレコードがある最後の列までのセルを表示することです。どうやってやるの?

*ps: 繰り返しますが、ファイルの形式は .csv で、Excel 2007 を使用しています。

4

1 に答える 1

18

複数列のリストボックスを使用してデータを表示できます。

論理

  1. 一時シートにテキスト(Csv)ファイルをインポートします
  2. 複数列のリストボックスにそのデータを表示する
  3. ユーザーフォームのアンロードイベントで一時シートを削除します

一時シートにテキスト(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

スクリーンショット

ここに画像の説明を入力してください

ユーザーフォームのアンロードイベントで一時シートを削除します

一時シートを削除するに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

HTH

于 2012-11-23T13:15:04.877 に答える