[[20200827133556]] 『VBAでコメントを入力(Cellを使用)』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでコメントを入力(Cellを使用)』(初心者)

お世話になっております。
HPを調べて試行錯誤しましたがエラーが解消されないため、
質問させていただきます。

配列に入っている文字列(123など任意の数字。文字列にする
必要があったため文字列データです)を
+でつないで、それをコメントとして表示したいです。

AddCommentメソッドを使用しているのですが、
HPで調べて出てきたものは Range AddCommentです。
行列の指定に変数を使っているため、
RangeではなくCellsを使ってできないかと
試行錯誤し、以下のようなプログラムなどをやってみましたが
エラーが出てしまいます。

<プログラムの一部>
Dim Coment1 As String

For i = 0 To UBound(Hairetu)

  Coment1 = Coment1 & "+" & Hairetu(i)
Next i

ws1.Activate
ws1.Cells(Gyo1, KingakuRetu1).Activate ←このセルにコメントを挿入したいです
ActiveCell.AddComment Coment1

(ws1は作業するシートです)

どなたかわかるかた、
助言どうぞよろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 中途半端に提示されるとわからないです。
 全部提示してください。

(稲葉) 2020/08/27(木) 13:49


 横から失礼します。

 Range Cells両方で試しましたが、両方とも
 エラーにならなかったですよ。
(OK) 2020/08/27(木) 14:03

Sub tdt()
 Dim Coment1 As String
 Dim hairetu(2) As String
 Dim gyo1 As Integer
 Dim ws1 As Worksheet
 Dim KingakuRetu1 As Integer
  hairetu(0) = "aa"
  hairetu(1) = "bb"
  hairetu(2) = "cc"
  Set ws1 = ActiveSheet
  gyo1 = 2
  KingakuRetu1 = 1
  Coment1 = Join(hairetu, "+")
  With ws1.Cells(gyo1, KingakuRetu1)
   .AddComment
   .Comment.Visible = False
   .Comment.Text Text:=Coment1
  End With
  Erase hairetu
  Set ws1 = Nothing
End Sub
(OK) 2020/08/27(木) 14:05

OKさん、稲葉さん

ありがとうございます。
OKさんのプログラムを自分のものに組み込んでみましたが
.AddCommentでエラーが出てしまいます。

Sub 照合検証()

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim Hairetu As Variant '金額が複数ある場合に+で区切って格納する配列
Dim Matubi1 As Long
Dim Matubi2 As Long
Dim Matubi3 As Long
Dim Gyo1 As Long
Dim KingakuRetu1 As Long
Dim Henkan As String '数式を文字列に変換
Dim Gyo2 As Long
Dim i As Long
Dim Coment1 As Variant 'コメント欄に記載する金額を格納

Set ws1 = ThisWorkbook.Worksheets("売上管理表") '売上整理ファイル売上管理表をws1とする。
Dim pass1 As String
pass1 = ThisWorkbook.FullName

MsgBox "照合するSAPデータファイル(毎月15日以降抽出しているファイル)を開いてください。"
Dim pass2 As String
pass2 = Application.GetOpenFilename("ブック, *.xlsx")
If pass2 <> "False" Then

   Workbooks.Open (pass2)
Else
    Exit Sub
End If

Set ws2 = ActiveWorkbook.Worksheets("売上1") 'SAPデータの売上シートをws2とする
Set ws3 = ActiveWorkbook.Worksheets("振替1") 'SAPデータの振替シートをws3とする

'売上整理の照合する金額の列番号を取得
Dim Retu As Range
Set Retu = Application.InputBox("「売上整理」ファイルから照合する売上金額列の5行目を選択してください。(例:8/24見込列を照合するならセルCU5)", Type:=8)
KingakuRetu1 = Retu.Column

'売上整理の末尾の行番号を取得
Dim Matubi As Range
Set Matubi = Application.InputBox("「売上整理」ファイルから「外販データ」の末尾を選択してください。(44行目がデータの末尾なら、44行目の任意のセルをクリック)", Type:=8)
Matubi1 = Matubi.Row
'売上整理の金額を主として「売上シート」と照合していく
For Gyo1 = 6 To Matubi1

    '金額が空白でないものを照合する
     If ws1.Cells(Gyo1, KingakuRetu1).Value <> "" Then
         '数式を文字列へ変換
         Henkan = ws1.Cells(Gyo1, KingakuRetu1).Formula

         '先頭の=を削除
         Henkan = Mid(Henkan, 2)

         '売上整理の金額セルに+が入っている場合、区切って複数金額を配列に入れる
         If InStr(Henkan, "+") > 0 Then
            Hairetu = Split(Henkan, "+")
            '配列に入っている金額を照合していき、コメント欄に照合できた金額を記入
            For Gyo2 = 2 To Matubi2
                For i = 0 To UBound(Hairetu)
                    If Hairetu(i) = ws2.Cells(Gyo2, 11).Value Then
                    Coment1 = Coment1 & "+" & Hairetu(i)
                    End If
                Next i
            Next
            With ws1.Cells(Gyo1, KingakuRetu1)
                 .AddComment
                 .Comment.Visible = False
                 .Comment.Text Text:=Coment1
            End With
         End If
     End If
Next

End Sub

売上整理ファイルの金額列(KingakuRetu1)の中には、
「=111+222+333」といった計算式が入っているものがあるため、
それを一旦文字列にして、その文字列の中に「+」が入っているかどうか
判定し、「+」が入っていたらそれで区切った各数字を配列に格納し、
それぞれの数字をSAPデータファイルの数字と照合し一致していたら
コメント欄に記述する、ということをしています。

(初心者) 2020/08/27(木) 14:19


 全部見てないけど
 .AddCommentの前に
 .ClearComments
 追加してください。
 すでにコメントがあると、エラーっぽい。

 あとはMatubi2 これ変数入ってないから、どちらにしろ、コメント空っぽじゃない?

(稲葉) 2020/08/27(木) 14:40


稲葉さん

ご返信ありがとうございます。
Matubi2、変数を入れるのを忘れておりました;
Matubi2はMatubi2 = ws2.Cells(1, 1).End(xlDown).Rowで代入し、
.ClearCommentsも言ってくださった場所に入れたのですが、
今度は
.Comment.Text Text:=Coment1
でアプリケーション定義またはオブジェクトの定義エラーと出てきます。
Variantで定義しているのをStringにしても同じでした。

(初心者) 2020/08/27(木) 15:53


 Dim Coment1 As Variant → Dim Coment1 As String 
 .AddComment      → .AddComment Coment1
 で試してください

(稲葉) 2020/08/27(木) 16:14


稲葉さん

頂いた内容で実行してみましたが、
.AddComment Coment1
でアプリケーション定義またはオブジェクトの定義エラーと出てきます。

.Comment.Text Text:="あああ"
など、文字列を入れれば正しく実行できるのですが、
変数だとできないのでしょうか・・・

(初心者) 2020/08/27(木) 16:54


 debug.print Coment1
 これで想定通りのコメントになっているか確認してください。
 
(稲葉) 2020/08/27(木) 17:02

稲葉さん

コメントが空白になっておりました。
途中で確認したときは、正しく数値が格納されていたのですが、あれやこれや試行錯誤しているうちにどこかおかしくなったようです。
他の部分の誤りを正してから教わったやりかたでやってみます。
ありがとうございます。
(初心者) 2020/08/27(木) 18:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.