• ベストアンサー

エクセルで出来ますか?

出来ればエクセルで作りたいと思っているのですが、 シート1にリストを作っておいたとして、 そのシートで一つ一つのセルを選択するごとに、 シート2に、シート1で選択したたセルの中身が一つ一つのセルにコピーされる。 というようなシステムは作れますか? 但し、リンクとして繋がらないように。 説明下手ですみません。 細かく言うと、 シート1でA1をクリック→シート2のB2にA1がコピー。 シート2でA3をクリック→シート2のB3にA3がコピー。 というような状態が欲しいです。 何か良い方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.4

1.「ツール」>「マクロ」>「Visual Basic Editor」を開いてください。 2.左上のほうの、「Sheet1(Sheet1)」というところ(シート名を変更していた場合は表示が違います)を右クリックして「コードの表示」を選択し、右側に表示されたウィンドウに下記のコードのどれかを貼り付けてください。 ★右クリックで選択したセルをコピーする場合 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Sheets(2).Range("B65535").End(xlUp).Offset(1).Value = Target.Value   Cancel = True End Sub ★ダブルクリックしたセルをコピーする場合 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   Sheets(2).Range("B65535").End(xlUp).Offset(1).Value = Target.Value   Cancel = True End Sub ★左クリックで選択したセルをコピーする場合(このコードは選択位置が変更されることによって実行されるので、右クリックにも反応してしまいます。また、同じセルを連続でコピーすることは出来ません。) Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Sheets(2).Range("B65535").End(xlUp).Offset(1).Value = Target.Value End Sub 3.画面下のタスクバーでエクセルの画面に戻してください。 以上で出来ると思います。

その他の回答 (5)

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.6

#4&#5です。 BEEP音に関してですが、「コントロールパネル」>「サウンドとオーディオデバイス」の 「サウンド」タブの中の「一般の警告音」の音が出ると思うので、そちらの設定のほうも 確認してみてください。 しかし、私の手持ちのVBAの本の中には、この命令の事はほとんど載っていないので、 もしかしたらエクセルのバージョンなどによって、使用できないのかもしれません。 ちなみに私の環境はWindows XP,Excel2000です。ご参考までに。

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.5

#4です。補足です。 右クリック用やダブルクリック用のコードで同一のセルを2回以上コピーしたときに、ちゃんとコピーできているのか分かりにくい場合があるようなので、下記のようにBEEPという命令を入れるといいかもしれません。コピーしたときに音が鳴るようになります。 ご参考までに。 例)右クリック用の場合 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Sheets(2).Range("B65535").End(xlUp).Offset(1).Value = Target.Value   Cancel = True   Beep End Sub

zz-zack
質問者

お礼

まさにコレです!! ありがとう御座います。出来た瞬間かなり感動しました。コレのお陰でこれからのお仕事がかなり楽になること間違いなし! ただ、BEEP、鳴ってくれないのは何故でしょう?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAを使えば出来るでしょうが、いやな面があります。 A1-->B2 A3-->B3 のように規則性が見られないようだからです。 同じセル位置なら Private Sub Worksheet_SelectionChange(ByVal Target As Range) Worksheets("sheet2").Cells(Target.Row, Target.Column) = _ Target End Sub で済みます。これならVBAを使わなくても良い方法もありますが、それは別として。 結局両者の対応表を、プログラムの中かシート表に持ってないと実現しないでしょう。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) t1 = Array("$A$1", "$A$3") t2 = Array("$B$2", "$C$3") a = Target.Address For i = 0 To UBound(t1) If a = t1(i) Then Worksheets("sheet2").Range(t2(i)) = Target End If Next i End Sub のように。少数例でテスト済み。 SelectionChangeイベントは欠点もあるかもしれないので 、自分以外の人が使う場合の、実用に耐え得るか自信なし。

zz-zack
質問者

お礼

VBA超初心者の私にはかなーり難しく見えてますが、 ぜひ今度やってみようと思います。 わざわざテストまでして頂いた技、絶対に利用させて頂きます。ありがとうございました!!

  • michank
  • ベストアンサー率13% (11/84)
回答No.2

各シートを「作業グループ状態する」(連続では、Shiftキー、飛び飛びでは、Ctrlキーを押しながら各シートタブをClickする方法)では、満足出来ないのですか。「リンクとしては繋らないように」も可能ですが。ご質問の意味を取り違えていたらごめんなさい。あしからず。

zz-zack
質問者

お礼

同じセルを何度も選択する、という状態を作りたかったので・・・ 回答ありがとうございました。

  • mameko3
  • ベストアンサー率41% (85/207)
回答No.1

回答じゃなくて申し訳ありません。 エクセルのことだと「答えてねっと」の回答者は本業プログラマーが多い上に、就業中ぽい時間だろうとすぐ回答があれこれきて、早いので結構おすすめです。 ただ、たまに厳しい人から初心者に対して非常にいやみな発言がありますが無料で教えてくれるから気にしないのが一番です。 でもzz-zackさんの質問は的確だから問題ないと思います。 もし知ってたら聞き流してください(^^;)。

参考URL:
http://www.kotaete-net.net/
zz-zack
質問者

お礼

ありがとうございます! 早速お気に入り登録してしまいました☆

関連するQ&A

専門家に質問してみよう