次のコードを実行した時に表示されるメッセージは【 ① 】である。
【 ① 】に入る適切な語句を解答しなさい。
Sub Exam1()
Dim A As Long
With Range("A1").ListObject
.ListColumns.Add
A = .ListColumns.Count
.ListColumns(A).DataBodyRange = "=[@Data3]*0.7"
End With
MsgBox WorksheetFunction.Sum(Range("D2:D10"))
End Sub
正解
【 ① 】3150
解説
【8章 テーブル操作】
【構造化参照を使いセルへ入力する】
指定子を使い表します。
●[@Data3]などの指定子の表現はシートのセル内のみ使えます。
「@」は入力したセルと同じ行を指定するという意味です。
*指定方法はセル内に直接入力し指定します。
●.ListColumns(A).DataBodyRange = "=[@Data3]*0.7"
本問題では右辺の[@Data3]の記述はセル内に、このセルと同じ行の「Data3」列の値を指定したことになります。
そこに0.7をかけ算した結果を左辺へ代入しています。
●構造化参照ではセル内では日本語も使用でき、以下の指定ができます。
テーブルすべて'[#すべて]
データ部分'[#データ]
見出し'[#見出し]
集計部分'[#集計]
*セル内への入力をコードで使用したいときは場合は以下のように””で囲みます。
例 ="テーブル1[#すべて]" 、 "=[@送料]*0.5"
【コード解説】
Sub Exam1()
Dim A As Long
With Range("A1").ListObject
'セルA1を含むテーブル全体を指定する。
.ListColumns.Add
'テーブルに列を挿入する。
A = .ListColumns.Count'
テーブルの列を数え変数に代入する。
.ListColumns(A).DataBodyRange = "=[@Data3]*0.7"
'挿入した一番右の列4列目に、構造化参照でData3列の値に0.7をかけ算した値を入力する。
End With
MsgBox WorksheetFunction.Sum(Range("D2:D10"))
'4列目の値の合計を表示する。
End Sub