Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
複数セル貼り付け時のTarget(AsRang)の値
投稿日時: 17/10/11 14:19:23
投稿者: S.Kos

こんにちは、みなさま。
 
以下の状況で Worksheet_Change(ByVal Target As Range) のTargetについてご教示ください。
 
1.マウス操作で、複数のセル"B2:E6"を
2.セル"C10"を左上とする領域に張り付けた
 
勿論のこと Target.Count = 20, Target.Row = 10, Target.Column = 3 となります。
このとき、張り付け領域の総数20だけでなく、縦方向の数5と横方向の数4を知る術はありませんか?
 
 
 

回答
投稿日時: 17/10/11 15:09:34
投稿者: Moko

こんにちは。
 
  Target.EntireRow.Count
  Target.EntireColumn.Count
 
で取得できます。

投稿日時: 17/10/11 15:29:12
投稿者: S.Kos

MoKoさん、早速のご教示、ありがとうございました。
>  Target.EntireRow.Count
>  Target.EntireColumn.Count
>
できました・・・!
 
で、次の疑問が沸き上がります。
先の投稿の前、あちこちを彷徨うとともに、Worksheet_Change無いでブレークポイントを仕掛け、ウォッチウインドウでTargetを眺めつつ、それらしき値と名前を探してみました。
けれども、Eから始まるモノはErr・・だけで、このTarget.EntireRowには辿り着けませんでした。
単に、見様が悪い、だけなのでしょうか?
こころ辺りがおありでしたら、重ねてご教示ください。
 
 
 

回答
投稿日時: 17/10/11 16:23:29
投稿者: WinArrow
投稿者のウェブサイトに移動

確かに
EntireRowやEntireColumnプロパティは、Rangeノプロパティからは出てきませんね・・・
 
今まで、何気に使っていたが、行全体、列全体を意味するプロパティです。
 
代案としては
 
Target.Rows.Count
Target.Columns.Count
 
を使ってもよいでしょう。
 
で、セル範囲を取得する場合は、
With Target
    Debug.Print Cells(.Row, .Column).Resize(.Rows.Count, .Columns.Count).Adddress
End With

回答
投稿日時: 17/10/11 18:11:35
投稿者: WinArrow
投稿者のウェブサイトに移動

>このTarget.EntireRowには辿り着けません
 
HELPでRangeオブジェクトのメンバーで出てきます。

回答
投稿日時: 17/10/11 22:42:44
投稿者: simple

>けれども、Eから始まるモノはErr・・だけで、このTarget.EntireRowには辿り着けませんでした。
既にご指摘のとおりヘルプがベストでしょう。
 
なお、Targetと入力してドットを入力すると、
入力候補のなかにEitireRowやEntireColumnプロパティが現れますね。
もっとも、そのプロパティの意味を知っていないと駄目ですが。

投稿日時: 17/10/12 09:23:37
投稿者: S.Kos

みなさま、ご教示のほど、誠にありがとうございました。
最初にResしていただいたMokoさんは勿論のこと、WinArrowさん、simpleさん、いつもの如く示唆に富んだお応えには改めて首肯するしかありません。
今後ともよろしくお付き合いください。