プログラミング > Excel & VBA >

VBA実装例一覧

2023-02-13

目次

表データのコピー

   別々にファイルが保存されていたり、別のシートにある表データを移したいときがある。また、移動したいデータの一部の値を変えたり、部分的に移動したいときがある。
   別のファイルへデータを移動。work_book1にデータを集約させる。集約させたい方のデータを.Clearによって初期化した後、別ファイルを開いて値をコピーしている。データの一部分の場合origin1.Offset(x, y).Resize(w, h).Value = origin2.Offset(x', y').Resize(w, h).Valueとする。一つのデータを書き換える場合.Value(x, y)と書き換えたい場所を指定してあげる。
コード1.
vba.xlsm
                    
Dim work_book1 As Workbook
Dim work_sheet1 As Worksheet
Dim origin1 As Range

Dim work_book2 As Workbook
Dim work_sheet2 As Worksheet
Dim origin2 As Range
Dim table2 As Range

Set work_book1 = Workbooks("work_book_name1")
With work_book1
	Set work_sheet1 = .Worksheets("sheet_name1")
	With work_sheet1
		Set origin1 = .Range("A1")
		col1 = origin1.End(xlToRight).Column
		row1 = origin1.Offset(Rows.Count - 1, 0).End(xlUp).Row
		origin1.Offset(1, 0).Resize(row1, col1).Clear
		origin1.Resize(1, col1).AutoFilter
		origin1.Resize(1, col1).AutoFilter

		With work_book2.Open("work_book_name2", ReadOnly:=True)
			Set origin2 = .Worksheets("sheet_name2").Range("A1")
			col2 = origin2.End(xlToRight).Column
			row2 = origin2.End(xlDown).Row
			origin1.Offset(1, 0).Resize(row2, col2).Value = origin2.Offset(1, 0).Resize(row2, col2).Value
			.Close SaveChanges:=False		
		End With
	End With
End With
                

重複なしのリスト作成

   コレクションクラスを使う。pythonでいうSetクラス。
   ある範囲のセルの値をvaluesに追加。if文による重複判定を記述しなくて良いため便利。コレクションはvalues(i)でアクセスする。values.countでコレクション内のデータ数がわかる。