スタンダード 模擬問題

Excel VBA スタンダード 模擬試験 ランダム順出題 ③ 第1問 公開問題

以下のコードは、実行すると値を表示するマクロである。

実行後、表示された値は【  ①   】である。

空欄に入る値を解答しなさい。

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

excel-vba-standard-test-cell-search-autofilter
正解

【  ①  】350

解説

【6章 検索とオートフィルター】

excel-vba-standard-test-cell-search-autofilter

【Offsetプロパティ】

見つかったセルを起点にし、周囲にある別のセルを指定する時はOffsetを使用します。

構文 基点セル.Offstt(行,列)

1列下へ、または1行右へ操作するときは 1 を指定する。

1列上へ、または1行左へ操作するときは ‐(マイナス)1を指定する。

0は現在のセルの位置となります。

セル範囲を変更するResizeと似ているので違いを整理すると、上下左右の値の増減は上記と同じですが、

・Offset 基点セルから、セルを指定する。 基点セルの位置は(0、0) excel-vba-standard-test-cell-search-autofilter

・Resize 基点セルから、セル範囲を変更する。 基点セルの位置は(1、1) となります。

resize

【コード解説】

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