アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelマクロについてお尋ねします。
アクティブなセルがある行の○列目の内容を別のセルに表示させたいのです。

コード 商品名 内容量 入数 金額 商品サイズ 箱サイズ JANコード ITFコード 商品説明(数十文字)

が行方向に多数並ぶ表があります。
時々規格を調べる必要があり、検索語句をそのままオートフィルタにかけるマクロを組んで使用していますが、問題がひとつ。
横方向でも一画面に収まらない表ですので、数十文字も並んでいる「商品説明」を見るときにいちいちスクロールバーを操作するのがわずらわしくてなりません。
現在は
A1=ADDRESS(CELL("row"),10)

A2=INDIRECT(A1)
の組み合わせで上記の表のすぐ上にカレント行の商品説明の項目を9列分セルを結合させて表示していますが、いかんせん関数ですので、F9を押さないと内容が反映されないため、ミスの原因にもなりかねません。

たとえば、D1を選択していようがD8、D15を選択していようが、D10の値をA2に表示させるためにはどんなマクロをどこに記述すればよいのでしょうか?(sheet1に記述するのか標準モジュールに記述するのかもよくわかっていません)
webで検索しましたがメッセージボックスを使用した表示方法しか見つかりませんでした。
もちろん、関数で対応できるのだとしてもOKです。

A 回答 (2件)

>アクティブなセルがある行の○列目の内容を別のセルに表示させたいのです。


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
    • good
    • 0
この回答へのお礼

とっても面白いです。
惜しむらくはおっしゃるとおり、A列の複数セルの選択ができないことですね。A列のコードは連番になっているため、新アイテムの追加のときなどはオートフィル機能を使用したくなります。

しかし、教えていただいたマクロを使用していればワークシートのどの部分からもテキストボックス内を見ることができますので、他でも使用してみたいと思います。

お礼日時:2003/12/28 13:24

こんな感じでしょうか?


ワークシートに以下のマクロを記述:

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
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2003/12/28 13:26

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