スタンダード 模擬問題

【ランダム順出題】 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