このスライドは...
シート編集の後には必ず VBA の手直しをしていたような効率の悪い VBA コードを撲滅する目的で用意しました、今後の参考になれば幸いです。
セル式 と VBA の間には...
深くて暗い川があります...
それはセル位置の...
扱い!
セル式さんは...
セル式中のセル位置を...
アドレス名で指定する!
C1セル =A1 + B1
シート編集で...
位置がずれても...
問題ない!
VBA さんは...
アドレス名を...
文字列で指定する!
Range("C1") =
Range("A1") + Range("B2")
または...
座標位置を指定する!
Cells(1, 3) =
Cells(1, 1) + Cells(1, 2)
シート編集で...
位置がずれても...
Excel さんは...
変えません!
だから...
行を増やしました
(⋈◍>◡<◍)。✧♡
何故か動きません!
( ゚д゚)ポカーン
直してください!
(´・ω`・)エッ?
ならばどうするか?
VBA に扱うセルをどう教える?
- セルを教えてあげる
- 範囲名で教えてあげる
- ボタン位置で教えてあげる
1. セルを教えてあげる
関数を作りセルを渡す =UserFunc(A1, B1)
' VBA
Function UserFunc(lhs, rhs)
UserFunc = lhs.Value + rhs.Value
End Function
2. 範囲名で教えてあげる
A1 を 左値 B1 を 右値 C1 を 答え と名前を付ける
Range("答え") = Range("左値") + Range("右値")
3. ボタン位置で教えてあげる
押したボタン位置から相対位置で判断する
With ActiveSheet
Set o = .Buttons(Application.Caller)
r = o.TopLeftCell.row
c = o.TopLeftCell.Column
End With
Cells(r, c-1) = Cells(r, c-3) + Cells(r, c-2)
こんなのが辛い...
辛い...
式は探すの大変なの
For i=1 To 100
Range("A:" & i) = i
Next i
辛い...
座標も探すの大変なの
For i=1 To 100
Cells(i, 1) = i
Next i
Range.Offset を使ってね
検索出来る目視も楽
Set p = Range("範囲名")
For i=0 To 99
p.Offset(i, 0) = i
Next i