Excelソフトは8割がたPCに入っているソフトである
そのソフトなら開発ができるVBAは最も触りやすく、そして嫌われているプログラミング言語だと教わりました
実際触ってみて、昔からある言語のためいろいろな人が関数を残してくださっている
それはありがたいことであるが、なんとも分かりにくいし、人によって書き方が違いすぎて理解するのが難しい
簡単なパーツ事にメモを残していけたらいいなって思い記載していきます
値のコピー
'セルの値をとってくる際にCopyするって思う人が大半であるが
Dim strobj As String
strobj = ThisWorkBook.Sheets(1).Range("A1").Value
'一度変数に入れてそれを以後使うようにする
'理由→長い処理でCopy記述を使っていた場合に、手動でコピーペーストを使ってしまった場合に影響を与えるためである
表の有効区間のコピー
値のある表の上でショートカットキー[Ctrl]+[Shift]+[*]でデータ範囲を選択できるこれをコードで再現する

D5を選択しているがこれは表の外なので、選択されません

操作中のブックシートの場合
ダメなやり方、
これもCopyと同じでコードの実行中に別シートを編集していた場合にエラーになってしまう可能性がある
Dim vdata As Variant
'Activateでこのシートを操作することを宣言する
ThisWorkBook.Sheets(1).Activate
'Activate出ない場合にCurrentRegion.Selectをするとエラーになります
ThisWorkBook.Sheets(1).Range("A1").CurrentRegion.Select 'データ有効範囲を選択
vdata = Selection.Value
推奨するやり方
Dim vdata As Variant
Selection.CurrentRegion.Select
'変数に配列として格納される
vdata = Selection.Value
別ファイルの場合
'ファイルをオープン
Dim wb As Workbook: Set wb = Workbooks.Open("FilePath")
Dim vdata As Variant
'追加Sheetにピボットデータ貼り付け用
vdata = wb.Sheets(1).Range("A1").CurrentRegion.Value 'データ有効範囲を選択
'必要に応じてファイル閉じる
wb.Close
'貼り付けをする今回は別のシートを追加してそこに張り付ける
Set ws = ThisWorkbook.Worksheets.Add(after:=Worksheets(1))
'UBound(vdata, 1) = 行 UBound(vdata, 2) = 列
ws.Range("A1", Cells(UBound(vdata, 1) + 1, UBound(vdata, 2) + 1)) = vdata


コメントを残す