OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルのマクロからコメントの書式設定をしたいのですが・・・。

  • 暇なときにでも
  • 質問No.115702
  • 閲覧数620
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 33% (5/15)

VBA初心者です。よろしくお願いします。昨日も同じ質問をしたのですが、誰にもお答えいただけなかったので、もう一度・・・。

今、プロテクトのかかっているシート上で、マクロからコメント作成、編集ができるようなプログラムを作っているのですが、マクロからコメントの書式設定ダイアログを表示させて、ユーザーが任意に書式を設定できるような仕様にしたいのですが、どうしたらよいのでしょうか?

詳しい方、よろしくお願いいたします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

ご指摘のように、事前にコメントの書式設定のダイアログを出していないとこのマクロは動きませんでした。事前に他のBookでこのダイアログを出していればうまく動きました。 なぜ??? 以下は調べた結果です。多分に推測が入っています。(この辺が一般人の悲しさ!)

オプション→ユーザー設定のコマンドタグの中の図形描写のコマンド『オブジェクト...』を使いたかったのですが、このコマンドの説明を読むと、

  [図/オートシェイブ/オブジェクト/コントロール]([書式]メニュー)
   選択した図、オートシェイブ、オブジェクトなどの線、塗りつぶし、パターン、
   サイズ、位置、およびその他のプロパティを設定します。
   選択した対象によって、コマンド名は変わります。

と書いてあります。(『選択した対象によって、コマンド名は変わります』が重要?)ということは、

  最初に探しにいった時には『コメントの書式設定』というコマンドは無い状態だった

というのが私の推測です。一旦出せば、『コメントの書式設定』というコマンドが実在することになる??
コマンドを名前で指定したのが問題(?)でした(多分)

対応策として
  myCmd.Controls(10).Execute 'コメントの書式設定を実行
としてみました。『10』は『オブジェクト...』のインデックスです(私のExcelですが)
Excelを立ち上げて、最初に修正後のマクロを動かして動作確認はしました。
試しに修正してみて下さい。

また、使用される場合は、エラー処理部分を下記の様に修正して下さい。保護を解除したままでした。
  MsgBox "コメントはありません"
  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
色々、おさがわせしました。
お礼コメント
shige0517

お礼率 33% (5/15)

度々ありがとうございます。
無事、エラーも出ず、解決いたしました!
なんか凄いプログラムを作った気になります。はい。

本当に何回も、お世話になりました。
ありがとうございました。
投稿日時 - 2001-08-10 15:12:31
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル10

ベストアンサー率 31% (44/140)

一番簡単な方法です。※不完全ですが 仮に、アクティブセルにコメントがある場合、 ActiveCell.Comment.Shape.Select Application.Dialogs(xlDialogFontProperties).Show とすれば、OKです。 ※不完全というのは、「フォント」のタグ分しか設定できません。  コメントの書式は、「フォント」「配置 ...続きを読む
一番簡単な方法です。※不完全ですが

仮に、アクティブセルにコメントがある場合、

ActiveCell.Comment.Shape.Select
Application.Dialogs(xlDialogFontProperties).Show

とすれば、OKです。

※不完全というのは、「フォント」のタグ分しか設定できません。
 コメントの書式は、「フォント」「配置」「サイズ」「保護」「プロパティ」「余白」タブで構成されます。いろいろ調べましたが、ヘルプからはこれ以上解りませんでした。
お礼コメント
shige0517

お礼率 33% (5/15)

お礼が遅れて申し訳ありません。ご回答ありがとうございます。
とりあえず、この方法でプログラムを制作しました。確かに「フォント」タグしか出ないですが、プロテクトのかかっていないシート上で普通に右クリックで書式設定ダイアログを表示させても同じなので、いいかな、と。
でもできれば他のタグも表示させたいですね・・・。

非常に助かりました。ありがとうございました。
投稿日時 - 2001-08-09 14:05:58

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

再度の質問たいへんですね。深刻さが伝わった?のでちょっと考えてみました。 先に不明点を (1)コメントをSelectする場合、これをVisibleにする必要があると思います。   ・・・これはシートの設定次第なので、下記では、表示させて、編集が終われば非表示にしています。 (2)ユーザーが任意に設定とありますが、コメントの挿入、削除もあるのでしょうか。   ・・・これは不明なため設定してある ...続きを読む
再度の質問たいへんですね。深刻さが伝わった?のでちょっと考えてみました。

先に不明点を
(1)コメントをSelectする場合、これをVisibleにする必要があると思います。
  ・・・これはシートの設定次第なので、下記では、表示させて、編集が終われば非表示にしています。
(2)ユーザーが任意に設定とありますが、コメントの挿入、削除もあるのでしょうか。
  ・・・これは不明なため設定してあるコメントのみ対応しています。
(3)そもそも、プロテクトがかかっているシートをユーザーが任意にイジッていい?
  ・・・これは不明点というより、疑問点ですね。
  ・・・下記では、パスワード等のことは考慮していません。

普通にDialogs・・・.Showでは目的のダイアログは出ないと思います(?)ので、コマンドバーから探して(?)います。Excel2000で動作確認しました。Excel97とか他は不明です。
実際動かしてみての感想ですが、ショートカットキーに割り当てた方が処理しやすいようです。参考にして下さい。質問の意味と違うところがあれば補足して下さい。

標準モジュールに貼り付けます。
Sub CommentEdit()
  On Error GoTo ErrorHandler 'エラー対応(コメントがないセルで実行した場合)

  ActiveSheet.Unprotect '保護を解除

  ActiveCell.Comment.Visible = True 'コメントを表示させる
  ActiveCell.Comment.Shape.Select 'コメントを選択

  Dim myCmd As CommandBar 'コメントの書式設定を含むコマンドバー
  Set myCmd = CommandBars("Shapes")
  myCmd.Controls("コメントの書式設定(&O)...").Execute 'コメントの書式設定を実行

  ActiveCell.Comment.Visible = False 'コメントを非表示にする

  'シート保護。データ、オブジェクト、シナリオにチェック。パスワードなしで作成。(必要なら編集して下さい)
  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

  Exit Sub

'エラー処理ルーチン(コメントがない!)
ErrorHandler:
  Err.Clear
  MsgBox "コメントはありません"
  On Error GoTo 0
End Sub
お礼コメント
shige0517

お礼率 33% (5/15)

お礼が送れて申し訳ありません。ご回答、ありがとうございました。参考になります。
ご不明の点ですが、
(1)は、nishi6さんのプログラムのような動きでいいのです。
(2)コメントの挿入、削除のプログラムはもうすでに他の機能としてつくってあります。ですから挿入されたコメントの書式をユーザーが任意に変えられるようにする機能を追加したい、ということです。
(3)これは、このプログラム自体、最初からウチの会社で作っていて、その追加機能としてコメントの書式設定をつけようということになったものなので、問題ありません。要は、そういう仕様なのです。

nishi6さんのプログラムですが、

myCmd.Controls("コメントの書式設定(&O)...").Execute 'コメントの書式設定を実行

のところでエラーが出てしまうようなのですが・・・。エクセルは2000です。
おそらくこのエラーが出る原因がわかれば、nishi6さんのプログラムが最善だと思うのですが。
投稿日時 - 2001-08-09 13:59:54
  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

myCmd.Controls("コメントの書式設定(&O)...").Execute を myCmd.Controls("コメントの書式設定(O)...").Execute と変えたらどうでしょうか。半角大文字のオー『O』です。 回答で『探している』と書いたのは、コメントを選択して右クリックして、プルダウンメニューの中に書かれている『コメン ...続きを読む
myCmd.Controls("コメントの書式設定(&O)...").Execute を

myCmd.Controls("コメントの書式設定(O)...").Execute

と変えたらどうでしょうか。半角大文字のオー『O』です。

回答で『探している』と書いたのは、コメントを選択して右クリックして、プルダウンメニューの中に書かれている『コメントの書式設定・・・』の文字を正確に記入する必要があったからです。shige0517さんのPCで実際そのメニュー内の文字を確かめられてモジュールの中に書けばいいと思います。この回答は多分、『コメントの書式設定(O)...』ではないかとの推測で書いています。
補足コメント
shige0517

お礼率 33% (5/15)

ありがとうございます。
う~ん、だめです。エラーがでてしまいます。

一度シートの保護を手動ではずして、右クリックでコメントの書式設定ダイアログを表示させ、また保護をかけて再びこのプログラムを実行すると正常に動くことがわかりました。

原因はまったくわかりません。
nishi6さん、おわかりになりますでしょうか?
投稿日時 - 2001-08-09 19:04:23
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ