プロが教える店舗&オフィスのセキュリティ対策術

Excel2007です。下記のように、テーブル1があります。

列0 列1 列2 列3 列4
行1  1  2   3   8
行2  3  4   6   4
行3  2  2   4   2

列0~列4は、テーブルの見出しです。(列0と書いてあるところが、A1セルです。)
マクロで、行1・行2・行3のいずれかの行の列1~列3のセルを選択したいのです。
行1・行2・行3のいずれを選択するかは、動的に与えようと思います。

どのようにすれば、それができるかが質問です。
列は、構造化参照します。[列1]とか[列3]というのを使って指定したいと思います。

試しに、行を固定([行2])して、以下のコードを実行させようとしたら、エラーが出ます。
Sub Macro1()
Range("A3").Select
Range("テーブル1[[#This Row],[列1]:[列3]]").Select
End Sub

エラーは「実行時エラー'1004' 'Rangeメソッドは失敗しました:'_Global'オブジェクト」

[#This Row]というのはどのような使い方をするものなのでしょうか。

A 回答 (2件)

>[#This Row]というのはどのような使い方をするものなのでしょうか


エクセルのVBAでは使いませんね。
ActiveCell.Row のことでしょうかね。
テーブル1とはシート名でしょうか
であれば
Sheets("テーブル1").Range("B" & ActiveCell.Row & ",D" & ActiveCell.Row).Select
とか
Range("B" & ActiveCell.Row & ",D" & ActiveCell.Row).Select
だけでも?
http://excelvba.pc-users.net/fol2/2_1.html
等が参考になるかと思います。

この回答への補足

ご回答ありがとうございます。

>テーブル1とはシート名でしょうか

デザインリボンのプロパティのテーブル名に「テーブル1」と表示されているので、
テーブル1はテーブルのはずですが。

Range("テーブル1[[#Headers],[列1]:[列3]]").Select
このようなコードなら、問題なく、見出し部分(列1・列2・列3)が選択されるんです。
見出し部分ではなくて、データの行を選択するのは、見出し名を使うやり方ではできないんでしょうか。

補足日時:2010/09/11 17:18
    • good
    • 0

テーブルを使ったことはないの何ですが、


ヘルプなどをチラッと眺めてみると
[#ThisRow]はVBAでいうところのActiveCellとは違うようです。
 
試しに、セルに[#ThisRow]を使った参照式を入力してみてください。
(例えば、【行2】と【列3】の交点の値(6)を取得する参照式)
当方の言わんとしていることが分かると思います。
 
------------------------------------------------
【結論】
[#ThisRow]は手動で参照式を入力するセルの行のことなので
それを表す方法のないVBAでは使用できない
------------------------------------------------
 
それを踏まえて、、、
>データの行を選択するのは、見出し名を使うやり方はできないんでしょうか
 
見出し名を使うとしたら部分的使用になるでしょう
例えば、
 
>Range("テーブル1[[#This Row],[列1]:[列3]]").Select
 
Intersect(ActiveCell.EntireRow, Range("テーブル1[[列1]:[列3]]")).Select
  
  
●あくまでもこれはヘルプなどからの当方の理解ですので参考程度ということで。。。
以上です。
 
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2010/12/08 04:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!