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

エクセルのいくつかのセルにコメントがつけてあります。そのコメントをVB上からさわったり,コメントによって動きを変えたりしたいのですが,コメントのないセルでコメントを参照しようとするとエラーが出るようです。エクセルのコメントの有無をVB上で取得する方法はどういうのでしょうか,どなたか教えてください。

A 回答 (4件)

VBって、VBAのことでいいのでしょう。



コメントが無いとき
If Range("A1").NoteText = "" Then
では、ダメでしようか?
    • good
    • 0
この回答へのお礼

ありがとうございました。
なんだこんなに簡単なことと,唖然としました。

If Cells(sj,sk ).Comment = "" Then

とやるとエラーになり,

If Cells(sj,sk ).NoteText = "" Then

が,通るなんて! こんなプロパティはヘルプには全く書いてないし。
知らないってことはほんとに恐ろしいです。
ご迷惑をかけました。ほんとうに,ありがとうございました。

お礼日時:2003/02/25 13:50

#2のものです。


#3でJa7awuさんの良い回答が出たので、それを使わせていただくと、#2はすっきりします。
Sub test03()
Dim cl As Range
n = 0
On Error GoTo trap 'エラー処理で、止まらないようにする。
For Each cl In Worksheets("sheet1").Range("a1:b10")
If cl.NoteText <> "" Then
MsgBox cl.Address
MsgBox cl.Comment.Text
n = n + 1
End If
Next
MsgBox "個数 " & n
trap:
End Sub
cl.Comment.Textでコメント内容を見て処理を左右してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。貴重な時間を取っていただき,申し訳ありません。
#3の手法がわかり,解決しました。
imogasiさんの#2の回答を試してみたのですが,コメントが二つあるときに,二つ目のコメントをつけようとして,実行時エラー1004になり動かなくなってしまいます。どうすればよいかわかりません。

お礼日時:2003/02/25 14:13

http://www.d4.dion.ne.jp/~sekiya_z/abl002/a231ae …を参考にしてやって見ました。あまり良いやり方と思いませんが、ご参考になれば。
HasCommentやIsCommentが使えればそちらを使ってください。
Sub test01()
Dim cl As Range
n = 0
On Error GoTo TRAP 'エラー処理で、止まらないようにする。
For Each cl In Worksheets("sheet1").Range("a1:b10")
cl.AddComment 'コメントを追加する
cl.ClearComments
GoTo p1
TRAP: '既に有るときにも、エラーとしないため
MsgBox cl.Address
MsgBox cl.Comment.Text
n = n + 1
p1:
Next
MsgBox "コメント設定個数" & n
End Sub
    • good
    • 0

エラーであればコメントが設定されていない。


エラーじゃなければコメントが設定されている。
という判断ができるのですからエラートラップを仕掛けて処理することもできますね。

それとは別に、こんな方法はどうでしょうか。
コメントが設定されていれば True を返す関数です。

Function IsComment(myRange As Range) As Boolean
Dim myBuffer As Variant

If TypeName(myRange) = "Range" Then
Set myBuffer = myRange.Comment
If TypeName(myBuffer) = "Comment" Then
IsComment = True
Else
IsComment = False
End If
End If
End Function

Sub test()
MsgBox IsComment(Cells(1, 1))
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。私の情報源はヘルプファイルしかないので,今はやむを得ず

For sj = 1 To ActiveSheet.Comments.Count
If ActiveSheet.Comments(sj).Parent.Row = sarow Then
……

のような形にしました。

TypeNameに "Comment" というのがあるのを全く知らなくてご迷惑をかけました。ご教示にありがとうございました。

お礼日時:2003/02/25 13:46

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