Excel VBA スタンダード 模擬問題 模擬試験

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) となります。 0や-の値は指定できません。

VBAベーシック 

●Offsetプロパティでは0やマイナスの整数を指定できましたがResizeプロパティでは指定できません。1以上の整数となります。

●Resize (行, 列)引数の省略

Resize(3, 1)・・・Resize(3)へと行のみ拡大し、列の幅は変わらないで省略可能です。

Resize(1, 4)・・・Resize(, 4)へと列のみ拡大し、行の幅はは変わらないで省略可能です。

【コード解説】

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