• ベストアンサー

カレント行の○列目のセルの内容を別のセルに表示させたいんです。

Excelマクロについてお尋ねします。 アクティブなセルがある行の○列目の内容を別のセルに表示させたいのです。 コード 商品名 内容量 入数 金額 商品サイズ 箱サイズ JANコード ITFコード 商品説明(数十文字) が行方向に多数並ぶ表があります。 時々規格を調べる必要があり、検索語句をそのままオートフィルタにかけるマクロを組んで使用していますが、問題がひとつ。 横方向でも一画面に収まらない表ですので、数十文字も並んでいる「商品説明」を見るときにいちいちスクロールバーを操作するのがわずらわしくてなりません。 現在は A1=ADDRESS(CELL("row"),10) と A2=INDIRECT(A1) の組み合わせで上記の表のすぐ上にカレント行の商品説明の項目を9列分セルを結合させて表示していますが、いかんせん関数ですので、F9を押さないと内容が反映されないため、ミスの原因にもなりかねません。 たとえば、D1を選択していようがD8、D15を選択していようが、D10の値をA2に表示させるためにはどんなマクロをどこに記述すればよいのでしょうか?(sheet1に記述するのか標準モジュールに記述するのかもよくわかっていません) webで検索しましたがメッセージボックスを使用した表示方法しか見つかりませんでした。 もちろん、関数で対応できるのだとしてもOKです。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

こんな感じでしょうか? ワークシートに以下のマクロを記述: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim row As Range With ActiveSheet Set row = .Range("A" & CStr(Target.row)) .Range("A1").Value = row.Value .Range("B1").Value = row.Offset(0,1).Value End With End Sub

Oyadi
質問者

お礼

ありがとうございます。 これからそれぞれの記述の意味を調べて、モノにしたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (1)

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

>アクティブなセルがある行の○列目の内容を別のセルに表示させたいのです。 A列にキーとなる、データ(商品名とか)があって、 (例えば商品説明があるとして)をテキストボックスに表示する、ことを考えました。 A列以外をクリックするとテキストボックスが消えます。 指定列が下の方に行くとテキストボックスも移動します。 ワークシートのSheet1のSelectionChangeイベント プロシージュアーに貼りつけてやって見てください。 またSheet1に1つテキストボックスを貼りつけて 下さい。 ただ2セルを範囲指定するとエラーになったり、脆くて、実用に耐えるか心配で、お遊び程度のものかなと思いますが、何しろコード行数が少ないので作り易いです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then 'A列なら Sheet1.TextBox1.Visible = True TextBox1.Text = Target.Offset(0, 8) 'I列を Else Sheet1.TextBox1.Visible = False End If Sheet1.TextBox1.Top = ActiveCell.Top + 10 End Sub

Oyadi
質問者

お礼

とっても面白いです。 惜しむらくはおっしゃるとおり、A列の複数セルの選択ができないことですね。A列のコードは連番になっているため、新アイテムの追加のときなどはオートフィル機能を使用したくなります。 しかし、教えていただいたマクロを使用していればワークシートのどの部分からもテキストボックス内を見ることができますので、他でも使用してみたいと思います。

すると、全ての回答が全文表示されます。

関連するQ&A