以下のコードは、実行すると値を表示するマクロである。
実行後、表示された値は【 ① 】である。
空欄に入る値を解答しなさい。
Sub Exam1()
Dim A As Range
Set A = Range("B:B"). Find (What:=”United States”)
If A Is Nothing Then
MsgBox "0"
Else
A.Offset(0, 1) = A.Offset(0, 1) *0.5
MsgBox A.Offset(0, 1).Value
End If
End Sub
正解
【 ① 】350
解説
【6章 検索とオートフィルター】
【Offsetプロパティ】
●見つかったセルを起点にし、周囲にある別のセルを指定する時はOffsetを使用します。
構文 基点セル.Offstt(行,列)
1列下へ、または1行右へ操作するときは 1 を指定する。
1列上へ、または1行左へ操作するときは ‐(マイナス)1を指定する。
0は現在のセルの位置となります。
●セル範囲を変更するResizeと似ているので違いを整理すると、上下左右の値の増減は上記と同じですが、
・Offset 基点セルから、セルを指定する。 基点セルの位置は(0、0)
・Resize 基点セルから、セル範囲を変更する。 基点セルの位置は(1、1) となります。
【コード解説】
Sub Exam1()
Dim A As Range
Set A = Range("B:B"). Find (What:="United States")
' オブジェクト変数に指定範囲から「United States」でセルを検索し結果をオブジェクト変数Aに代入する。
If A Is Nothing Then
'条件分岐 もし見つからなかった時は以下の処理を行う。
MsgBox "0"
Else
'条件分岐 もし見かった時は以下の処理を行う。
A.Offset(0, 1) = A.Offset(0, 1) *0.5
'見つかった変数Aから一つ右のセル内の値に0.5を掛け算し、結果の値を代入する。
MsgBox A.Offset(0, 1).Value
'結果をメッセージボックスで表示する。
End If
End Sub