• ベストアンサー

エクセルのコメントの有無をVB上で取得する方法を教えてください。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

VBって、VBAのことでいいのでしょう。 コメントが無いとき If Range("A1").NoteText = "" Then では、ダメでしようか?

hanako2001
質問者

お礼

ありがとうございました。 なんだこんなに簡単なことと,唖然としました。 If Cells(sj,sk ).Comment = "" Then とやるとエラーになり, If Cells(sj,sk ).NoteText = "" Then が,通るなんて! こんなプロパティはヘルプには全く書いてないし。 知らないってことはほんとに恐ろしいです。 ご迷惑をかけました。ほんとうに,ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

#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でコメント内容を見て処理を左右してください。

hanako2001
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

http://www.d4.dion.ne.jp/~sekiya_z/abl002/a231ae13.htmlを参考にしてやって見ました。あまり良いやり方と思いませんが、ご参考になれば。 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

noname#102878
noname#102878
回答No.1

エラーであればコメントが設定されていない。 エラーじゃなければコメントが設定されている。 という判断ができるのですからエラートラップを仕掛けて処理することもできますね。 それとは別に、こんな方法はどうでしょうか。 コメントが設定されていれば 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

hanako2001
質問者

お礼

ありがとうございました。私の情報源はヘルプファイルしかないので,今はやむを得ず For sj = 1 To ActiveSheet.Comments.Count If ActiveSheet.Comments(sj).Parent.Row = sarow Then …… のような形にしました。 TypeNameに "Comment" というのがあるのを全く知らなくてご迷惑をかけました。ご教示にありがとうございました。

関連するQ&A

  • VBからEXCELのセルの値を取得する方法

    VBからEXCELファイルのあるセルの値を取得すると、本来の書式設定とは 違った形式で取得されてしまいます。 VBから値を取得する方法を教えて下さい。 *EXCELファイルのセルの設定  セルの書式設定-ユ-ザ-定義-[h]:mm   (時刻ではなく、時間として設定しています) これをVBから普通に取得すると「1.7523548785」などといった 数値になってしまいます。

  • VBのラベルを説明コメント付きでエクセルへ

    VB初心者です。 VBにあるラベルの数値または文字をエクセルに送り、送ったセルにカーソルをもって行くと数値または文字の説明が出るようにしたいのですが、、、 VBでは「TooltipText」を使いますよね。そのような動きをさせたいのです。 コードを書いていただくとありがたいです。よろしくお願いします。

  • VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい

    VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい 環境:VB6.0/Excel2003/WindowsXP VB初心者です。 現在プログラム内で参照しているexcelファイルの絶対パスと、フォームのテキストボックスに入力された絶対パスを比較して、 それらが同一だった場合エラーを表示するというプログラムを作成しています。 プログラム内では、現在開かれているエクセルファイルの内容をチェックして、対象となるデータを持っているエクセルファイルを1つ選択し、データを取り込むという動きをしています。 現在開かれているファイルのパスと入力されたパスを比較する事は出来たのですが、 そうではなくデータを取り込んでいるエクセルファイルのみ比較したいのです。 (複数のファイルが開かれている場合、データを取り込んでいるファイルとは別のファイルのパスが入力されたファイルパスと同一だったときもエラーとなってしまうので..) データを取得しているところからはフルパスは取れそうにないので、ほかの方法を模索しています。 どうぞ宜しくお願い致します。

  • VBによるEXCELの書き込み

    お世話になっております VB2010でのEXCEL書き込みで質問です 今、VB2010で、EXCELに書き込む処理を行っています EXCELの参照を追加はせず、Object型にEXCELをセットして、EXCEL参照がなくても使用できるようになっています 問題は、VB2010でEXCELでファイルを書き込み中にスタートメニュー等からEXCELを開き、そこから他のEXCELファイルを開くとVBで実行中のEXCELも開いてしまい、そのVB2010での実行中のEXCELを閉じるとVBの方でエラーが起きてしまいます VB2010で使用するEXCELを、スタートメニューから開いたEXCELが使用しないようにすむ方法はありますでしょうか

  • エクセルのコメントについて

    いつも有難うございます。 エクセル2003であるセルにコメントを表示させているのですが、マクロで並び替えをするとコメントだけは並び替えできずに元のセルから動きません。コメントもマクロで動かすことはできるのでしょうか? 何か方法をご存知の方宜しくお願いいたします。

  • エクセルのセルからVB等で作成したアプリの変数を参照するには

    エクセルのセルからVB等で作成したアプリの変数を参照する方法がわかりません。 また、そのアプリで変数が更新された際に自動的にセルの内容が変わるといった仕組みは無いでしょうか。 楽天証券のリアルタイムスプレッドシートは、セルで"=app|code!field"のような形で情報を参照できるので、何らかの方法があると思っています。 また、上記の式をエクセルに入力すると、「APP.EXEを起動しますか」といったメッセージが出ますので、参照はできるのだと思います。 VBのアプリからセルをいじると、パフォーマンスが悪く困っています。 アプリはVBにはこだわっておりません。 また、ヒントとなるような情報だけでもかまいません。 よろしくお願いします。

  • エクセルコントロールのVB2008での参照方法

    VB2008でエクセルから値を取得するプログラムを作成しています セルの値を取得することはできたのですが、シートに貼り付けられた チェックボックスやラジオボックスの値の取得方法が分からずに 困っています。 セルの値を取得するまでのフローは以下の様に作成しました ------------------------------------------ Dim exapp As New Object Dim exbook As New Object exapp = CreateObject("Excel.Application") exbook = exapp.workbooks.open(FileName) Dim exsheet As Excel.Worksheet exsheet = CType(exbook.Worksheets.Item(1), Excel.Worksheet) textbox1.text=exsheet.range("A1").value ・ ・ exsheet.nothing exbook.close(False) exapp.quit ------------------------------------- 上記のセルの値を取得している流れの中でチェックボックスや ラジオボックスの値を参照したいのですが どのようにすればよいでしょうか お手数ですがアドバイスなど頂ければ幸いです

  • VBにて起動アプリの取得

    VB6.0にて開発しています。 自分の端末でEXCELを使用している際 どのブックを開いているかVB側にて取得 する方法を教えて下さい。 現状)VBからあるフォルダのBOOKを コピーし、そのBOOKにデータを 貼り付けています。しかし他のBO OKを開いているとメモリエラーが 起こります。その為EXCELが立 ち上がっていたら警告を出そうと思 います。

  • VB.NETでExcelファイルを読み込むには?

    初心者です。vb.netでExcelのファイルを読み込み、特定のセルからデータを取得したいのですが、(例)登録一覧.xls ファイル の学生番号(セル:A4)の値を取得)ネットで調べてもよくわからなくて困っています。何か良い方法があれば教えてください。よろしくお願いします。

  • エクセルでコメントが消えた

    Windows7です。 エクセル2007でセルに付けたコメントが突然すべて無くなりました。原因わかりません。 復旧方法ありましたらお願いします。

専門家に質問してみよう