.csv 形式のファイルがあり、AS 列から、テーブルのようなレコードがいくつかあります。私の完全なプログラムは、いくつかの行、列、およびセル値の編集などを挿入/削除/削除/追加します。必要なすべての操作をコーディングすることができました。
私が欲しいのは、Ax1 から VBA ユーザー フォームにレコードがある最後の列までのセルを表示することです。どうやってやるの?
*ps: 繰り返しますが、ファイルの形式は .csv で、Excel 2007 を使用しています。
.csv 形式のファイルがあり、AS 列から、テーブルのようなレコードがいくつかあります。私の完全なプログラムは、いくつかの行、列、およびセル値の編集などを挿入/削除/削除/追加します。必要なすべての操作をコーディングすることができました。
私が欲しいのは、Ax1 から VBA ユーザー フォームにレコードがある最後の列までのセルを表示することです。どうやってやるの?
*ps: 繰り返しますが、ファイルの形式は .csv で、Excel 2007 を使用しています。
複数列のリストボックスを使用してデータを表示できます。
論理
一時シートにテキスト(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