ここから本文です

エクセルvbaで教えて下さい。 コメントセルを取得して別シートのセルの値を取得す...

wnp********さん

2013/5/3013:41:59

エクセルvbaで教えて下さい。
コメントセルを取得して別シートのセルの値を取得する方法を教えて下さい。

帳票とデータベースというシートがあります。

帳票というシートに案件番号というセルの下に9ケタの数字を入れます。

”1”というコメントがあるセルに

データベースというシートの案件番号が一致するセルの2列目の”あ”を取得

するコードを教えて下さい。

同様に5列目まで取得したいです。用途としてはバラバラの見積書書式にコメント”1”機能を

取得して入力の効率化をはかりたいです。

データベース,帳票,rnx As Range,rng As Range,i As Variant,案件番号,シート

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
594
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

編集あり2013/5/3014:51:05

コメントが設定されているセルにLOOKUP関数の式を記入すればよいのでは?
マクロでやることのように思えません。

書くとすると下のような感じでしょうか?
自動的に起動するなら、下のコードを帳票シートのシートモジュールに記入してください。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCmt As Object, i As Variant, rnx As Range, rng As Range
If Target.Address <> "$B$3" Then Exit Sub

With Worksheets("データベース")
On Error Resume Next
i = WorksheetFunction.Match(Target.Value, .Columns(1).Cells, 0)
If Err.Number <> 0 Then
MsgBox "案件番号は未登録です"
Exit Sub
Else
Set rngx = .Cells(i, 1)
End If
On Error GoTo 0
End With

Application.EnableEvents = False
For Each rng In Me.Cells.SpecialCells(xlCellTypeComments)
With rng.Comment
If IsNumeric(.Text) Then
If CInt(.Text) > 0 And CInt(.Text) < 5 Then
rng.Value = rngx.Offset(, CInt(.Text)).Value
End If
End If
End With
Next
Application.EnableEvents = True
End Sub

ボタンかなにかから起動するなら
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCmt As Object, i As Variant, rnx As Range, rng As Range
If Target.Address <> "$B$3" Then Exit Sub

Sub Sample
Dim xCmt As Object, i As Variant, rnx As Range, rng As Range,Target As Range
Set Target = ActiveCell
と変更して、案件番号を選択した状態で起動してください。

質問した人からのコメント

2013/5/30 15:04:54

感謝 天才ですか?

もしよけばもう少し考えてもらうのは可能ですか?

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる