dポイントプレゼントキャンペーン実施中!

お世話になっております。

現在作成しているソフトでわからない点がありますので
質問させてください。

ExcelのVBAなのですが、

とあるセルをコピーし貼り付ける際に、そのコピー元のセル情報(Range等)を取得したいと考えています。

その場合に、コピー元のセル情報はどのように取得すればよいのでしょうか。

イベントでは取れなさそうに見えましたので、Worksheet_changeイベントで取得しようと考えております。

つたない説明で申し訳ございませんが、よろしくお願いいたします。

A 回答 (7件)

http://homepage2.nifty.com/kmado/kvba.htm
▲こちらのTipsにAPIを利用する方法が書かれていますので、参考にしてみてください。
[E03M121 切り取り又はコピーされたセル範囲を取得する]

取得するタイミングが、『コピー後、次のセル範囲を選択した時』で良ければ
Sheet の SelectionChange イベントが使えそうです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Static ad As String
  If Application.CutCopyMode Then
    MsgBox ad
  Else
    ad = Target.Address(0, 0, external:=True)
  End If
End Sub

でも
>通常は不要ですが、データ貼り付けを行った際に、データの内容をチェックし、
>別のセルに値をセットするため、セルのコピー範囲の情報が解除され、
>連続して貼り付けできない状態になっております。
...という事であれば、作業用シートにでも一旦コピーし、
そこから再コピーするような仕様でも良いような気もしますね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
また、お礼が遅くなり申し訳ございません。

丁寧なアドバイスありがとうございます。
頂いた内容でいろいろやってみてなんとかいけました。

お礼日時:2008/07/16 11:27

毎回コピー範囲が変わると難しいのですが、


http://t_shun.at.infoseek.co.jp/My_Page/Excel-VB …
のサイトは参考になりませんか?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
また、お礼が遅くなり申し訳ございません。

毎回コピー範囲が変わるのですが、リンク先のサイトは
参考になりました。
いろいろ試させていただきます。

お礼日時:2008/07/16 11:26

> 確かにいただいた内容ではアドレスの取得ができるのですが、


> それがコピーされたセルなのかどうかが判別できません。

何をしたいのかがわからないので適切なアドバイスができませんが、では、イベントで取得するのは諦め、自前のコピーボタンを作ったらどうでしょう?
そうすればコピーすると同時に選択範囲も取得できます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
また、お礼が遅くなり申し訳ございません。

最終的にどうにもならなければコピーボタンを作成しようと思います。

お礼日時:2008/07/16 11:24

コピーのイベントってないんですね。


コピーするためにはまず範囲をSelectしなくてはならないでしょうからSelectionのアドレスを取得してみたらどうでしょう?

Dim x

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
x = Selection.Address
End Sub

Sub aaaa()
MsgBox x
End Sub
    • good
    • 0
この回答へのお礼

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

確かにいただいた内容ではアドレスの取得ができるのですが、
それがコピーされたセルなのかどうかが判別できません。

やはり難しいのでしょうか?

お礼日時:2008/07/10 15:26

内容を書いてる間に質問者より補足が有りましたけど、


具体的に何の情報を取得したいのですか?
又は、何を(どんな事)をしたいのですか?

この回答への補足

仮にA1:Z10までデータが入っていたとして、

B1:B5までを選択してコピー、

C3:C8に貼り付け

を行う際に、「B1:B5」という情報が取得したいです。

通常は不要ですが、データ貼り付けを行った際に、データの内容をチェックし、
別のセルに値をセットするため、セルのコピー範囲の情報が解除され、
連続して貼り付けできない状態になっております。

ご迷惑おかけし申し訳ございませんがよろしくお願いいたします。

補足日時:2008/07/10 15:17
    • good
    • 0

>とあるセルをコピーし


何処までデータが入力されているか分からないけど、とにかくデータが入力されてる範囲を取得したい。と言う事ですか?

セルA1から連続してデータが入っている範囲を選択させるだけなら
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
で、いいと思います。
後は、煮るなり焼くなり
    • good
    • 0
この回答へのお礼

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

私の質問の仕方が悪かったのですが、
望んでいたこととは違っておりました。

ご回答いただいた内容は別件で使用させていただきます。

お礼日時:2008/07/10 15:17

>とあるセルをコピーし


この時のセルはどのように選択されているのですか?
    • good
    • 0
この回答へのお礼

すみません、説明不足でした。
セルのコピー、貼り付けは通常と同じです。
(Ctrl+C,Ctrl+Pなど)

セルのコピー状態になった時に破線のようなもので囲われますが、
その範囲を何かしらの方法で取得できればと考えております。

お礼日時:2008/07/10 14:55

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