[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『自動でコメントを表示させたい』(れいれい)
おせわになります。
複数シートがあるブックで AAAAシートだけ、E10:H100の範囲で セルにカーソルを置いたらその列の C列に入っている文字列を表示させたいのですが 可能でしょうか? (D10にの場合C10 H85の場合C85の文字列) よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
用語を整理願います。
>>E10:H100の範囲でセルにカーソルを置いたら
たとえば F20 にカーソルを置きました。
>>その列のC列
F20 ですから 【その列】は F列。その C列って?? 【その行】の間違いですか? つまり F20 にカーソルをおいたら C20 ですか?
>>(D10にの場合C10 H85の場合C85の文字列)
D10 って範囲外ではないのですか?
(β) 2016/04/28(木) 09:00
念のため確認。
カーソルというのはセルカーソルではなくマウスカーソルでいいのか? (コメントと書いているのでそうだと思うが)
(ねむねむ) 2016/04/28(木) 09:05
>その列の その行の、の間違い
>D10の場合 Dは範囲外では?
'ThisWorkbookモジュール
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "AAAA" Then Exit Sub If Target.Cells.Count <> 1 Then Exit Sub If Intersect(Target, Target.Worksheet.Range("E10:H100")) Is Nothing Then Exit Sub Dim Msg As String Msg = Target.EntireRow.Range("C1").Value MsgBox Msg End Sub
(とおりすがり) 2016/04/28(木) 09:11
とおりすがりさんとは、ちょっと別のアプローチで。
AAAA シートのシートタブを右クリック。コードの表示を選んででてくるところに以下を貼り付け。 右上のXボタンでシートに戻ってください。
最初に1回だけ、C10からC列データの最後のセルまでを選んで Ctrl/c。そのまま Ctrl/v。
あとは、カーソルを置けばコメントが表示されます。
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Dim c As Range Dim a As Range
Set r = Intersect(Target, Range("C10:C" & Rows.Count)) If r Is Nothing Then Exit Sub
For Each c In r For Each a In c.EntireRow.Range("E1:H1") a.ClearComments If Not IsEmpty(c) Then a.AddComment a.Comment.Text c.Value End If Next Next
End Sub
(β) 2016/04/28(木) 09:42
素人すぎて、列と行の区別がついておりませんでした。 βさんがおっしゃる通り、【その行】の間違いです。 F20にカーソル(マウス)を置いたらC20の文字列が 表示されるようにしたいのです。 ねむねむさんがおっしゃる通り、マウスカーソルです。 とおりすがりさん。ありがとうございます。 教えて頂いた内容で表示できました。 でも、贅沢ですが、もしマウスを置いた時だけ表示される 「コメント」のような表示はできないでしょうか? (表示を消すのにクリックが必要ないようなもの) βさん、教えて頂いたもの試してみます。 少々お待ちを。 (れいれい) 2016/04/28(木) 10:01
βさんと同じ方向で。
ワークシートモジュールに Private Sub Workbook_Open() Dim WK_RANGE As Range
With Worksheets("AAAA") .Range("E10:H100").ClearComments For Each WK_RANGE In .Range("E10:H100") WK_RANGE.AddComment WK_RANGE.Comment.Text Text:=.Cells(WK_RANGE.Row, "C").Text
Next End With End Sub
AAAAのシートモジュールに Private Sub Worksheet_Change(ByVal Target As Range) Dim WK_RANGE As Range Dim COLUMN_CNT As Integer If Intersect(Target, Range("C10:C100")) Is Nothing Then Exit Sub
For Each WK_RANGE In Intersect(Target, Range("C10:C100")) For COLUMN_CNT = 5 To 8 Cells(WK_RANGE.Row, COLUMN_CNT).ClearComments Cells(WK_RANGE.Row, COLUMN_CNT).AddComment Cells(WK_RANGE.Row, COLUMN_CNT).Comment.Text Text:=WK_RANGE.Text Next Next End Sub
ブックを開く際にその時のAAAAシートの内容でコメントを設定、ワークシートモジュールのシートチェンジイベントで C列が変更された際にそれに合わせてコメントを変更。
専門家ではないのであちこちに無駄や気づいていない不具合があるかもしれないが。
(ねむねむ) 2016/04/28(木) 10:14
βさん、 >a.Comment.Text c.Value だとC列の値が数値の場合にエラーになる。
>a.Comment.Text c.Text にしたほうがいいと思うが。
追記 .Value だと表示形式が設定されている場合にそれが反映されないというのもあるな。 (ねむねむ) 2016/04/28(木) 10:20
To ねむねむさん
あぁ、そうですね! ご指摘深謝で〜す。
(β) 2016/04/28(木) 11:16
素人質問ですいません。 ワークシートモジュールというのは 「標準モジュール」のことですか? 「ThisWorkbook」でしょうか?
(れいれい) 2016/04/28(木) 12:23
ThisWorkbookでできました! お手数をおかけしました。
ありがとうございました。 (れいれい) 2016/04/28(木) 12:53
ちょっと考え漏れていたことがあったので。
C10:C100までが全て手入力する場合であれば問題はないが式が入力されていて別のセルを編集するとC10:C100が変化する場合は 私のでもβさんのVBAでも対応できない。 (私のほうはブックオープン時は大丈夫だがAAAシートが変更された場合には対応できない)
そのような場合はC10:C100の式がどこを参照しているかという情報が必要になる。 (ねむねむ) 2016/04/28(木) 13:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.