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

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

詳しい方、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

ご指摘のように、事前にコメントの書式設定のダイアログを出していないとこのマクロは動きませんでした。

事前に他のBookでこのダイアログを出していればうまく動きました。 なぜ??? 以下は調べた結果です。多分に推測が入っています。(この辺が一般人の悲しさ!)

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

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

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

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

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

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

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

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

本当に何回も、お世話になりました。
ありがとうございました。

お礼日時:2001/08/10 15:12

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



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

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

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

この回答への補足

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

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

原因はまったくわかりません。
nishi6さん、おわかりになりますでしょうか?

補足日時:2001/08/09 19:04
    • good
    • 0

再度の質問たいへんですね。

深刻さが伝わった?のでちょっと考えてみました。

先に不明点を
(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
    • good
    • 0
この回答へのお礼

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

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

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

のところでエラーが出てしまうようなのですが・・・。エクセルは2000です。
おそらくこのエラーが出る原因がわかれば、nishi6さんのプログラムが最善だと思うのですが。

お礼日時:2001/08/09 13:59

一番簡単な方法です。

※不完全ですが

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

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

とすれば、OKです。

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

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

非常に助かりました。ありがとうございました。

お礼日時:2001/08/09 14:05

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBAのコメント設定について教えていただけないでしょうか。

エクセルVBAのコメント設定について教えていただけないでしょうか。

セルK2に、「8/13」など、日付を投入します。
セルL2には「=DAY(K2)」と投入して、日付だけを表示させています。

セル11行目から下方向に、1日から31日まで表示されています。

セルK2に表示された日付を元に、M列の対象となる日付に以下の
ようにコメントを入れようと思っています。
K2が13日でしたら、M23にコメントを入れたいと思っています。
「13(金)        ←←改行する。
通知予定」


次のようにマクロを設定しましたが、(1)曜日の情報をコメント欄に入れることがで
きません。
また、(2)コメントの書式設定がうまくいきません。
コメント欄を「MSゴシック」のフォントで「14ポイント」のサイズで
「自動サイズ調整」をしたいのですが、コメントが挿入されたセルの書式が変更さ
れてしまいます。


曜日の情報入れて、コメントの書式を設定する方法を教えていただけないでしょうか。

---------------------------------------------------------------------
Sub コメント書式設定2()

Dim 通知日 As Long
通知日 = Range("l2").Value

Cells(通知日 + 10, 13).Select
ActiveCell.AddComment Text:=通知日 & Chr(10) & "通知予定"
With Selection.Font
.Name = "MS Pゴシック"
.FontStyle = "太字"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
End Sub

エクセルVBAのコメント設定について教えていただけないでしょうか。

セルK2に、「8/13」など、日付を投入します。
セルL2には「=DAY(K2)」と投入して、日付だけを表示させています。

セル11行目から下方向に、1日から31日まで表示されています。

セルK2に表示された日付を元に、M列の対象となる日付に以下の
ようにコメントを入れようと思っています。
K2が13日でしたら、M23にコメントを入れたいと思っています。
「13(金)        ←←改行する。
通知予定」


次のようにマクロを設定しましたが...続きを読む

Aベストアンサー

>With Selection.Font
 [新しいマクロの記録] で記録すると、確かにそのような コード が記述されますが、その マクロ を再実行してみると、「Selection」は M23 に挿入された コメント ではなくて、セル自体 になるようですね。

With ActiveCell.Comment.Shape.DrawingObject.Font
としてみてください。


>(1)曜日の情報をコメント欄に入れることができません。
 「曜日の情報」が書かれていないからです。
Range("l2").Value
には「13」という数値が入っていますので、これに基づく「通知日」から曜日を割り出すことはできません。

 参照するなら「Range("K2").Value」の「日付シリアル値」の方で、
通知日 & Chr(10) & "通知予定"
の部分を
Format(Range("K2").Value, "d(aaa)") & Chr(10) & "通知予定"
のようにします。

QExcelの書式設定ダイアログボックス セルの網かけ

エクセルにおいて,セルの背景色を,
[書式]-[セル]-(セルの書式設定ダイアログボックス)[パターン]タブクリック で,「セルの網かけ 色(C):」の下に40色の塗りつぶし色カラーパレットがあります。

ここからが質問です。
その下に並んでいる16色のカラーパレットは何のためにあるのでしょうか? どのように使うのが本来の使い方ですか?
同様なカラーパレットは「パターン(P):」の右▼ボタンをクリックして現れる網掛けパターンの下にもあります。
これについても教えてください。

Aベストアンサー

こんにちは。

結論から申し上げると、ユーザー定義色を設定可能にするためです。
[ツール]-[オプション]メニューの[色]タブから、任意の色を指定することが出来ます。

こちらの[色]タブは、カラーパレットがそのまま表示されます。
すなわち、上段40色、下段16色です。

下段の16色のうち、任意の1色をクリックし、変更ボタンを押します。
40色以外の標準的な色を選択することも可能ですし、自身でRBG値を指定することも可能です。
色を変更すると、パレットにその色が反映されるようになります。

標準的な40色に対しても、任意の色を設定することが出来ますが、
こちらはあくまでも「ベースとなる色」ですから、
初期の色のままにしておくのが通常です。

なお、ユーザー定義色は設定したブックにのみ有効です。
(エクセルの初期値にはならない。)

そのため、1つのブックで作成したユーザー定義色を他のブックにコピーしたい場合は、
明示的に指定してあげる必要があります。
こちらについては、[ツール]-[オプション]メニューの[色]タブをご覧いただければイメージできると思います。

こんにちは。

結論から申し上げると、ユーザー定義色を設定可能にするためです。
[ツール]-[オプション]メニューの[色]タブから、任意の色を指定することが出来ます。

こちらの[色]タブは、カラーパレットがそのまま表示されます。
すなわち、上段40色、下段16色です。

下段の16色のうち、任意の1色をクリックし、変更ボタンを押します。
40色以外の標準的な色を選択することも可能ですし、自身でRBG値を指定することも可能です。
色を変更すると、パレットにその色が反映されるようになり...続きを読む

Qエクセルで条件付書式設定を解除して書式設定を残す方

説明がしづらく、うまく伝えられればいいのですが。

条件付書式でセルに色を付けたりしています。
 例) A行のセルに
    100より小さい数字が入力されていたら、B行は赤で塗りつぶす。
    100より大きい数字が入力されていたら、B行は青で塗りつぶす。
    B行には文字や数字が入力されています。

例)のような場合で、B1に赤、B2が青で塗られている場合
条件付書式を介さずに、B1やB2に色の塗りつぶしを残す方法がありますでしょうか?

条件付書式の解除(削除?)しても、A行に数字がなくても、B行に色が付いていて欲しいのです。
シートやファイルやセルは、別の場所を使用しても問題ありません。

考えている事は、
計算式で答えを表示してあるセルを、値のみコピーする。のような方法の、書式のみペーストといった形です。
他に希望通りの表示ができれば特に細かな点は気にしません。



いろいろなセルから条件をつけてリンクされたり計算結果を表示させたりした、プレビュー用といいますか、見た目の完成された表を、別担当に渡すことになりました。

式でできたシートではなく、テキストや数字の入力されたシートに変換して渡す場合、条件付書式が効いているとその後の作業に見た目の不具合が生じてしまうことを避けたいのです。

何かいい方法があれば教えてください。
説明不足がああれば、補足します。

説明がしづらく、うまく伝えられればいいのですが。

条件付書式でセルに色を付けたりしています。
 例) A行のセルに
    100より小さい数字が入力されていたら、B行は赤で塗りつぶす。
    100より大きい数字が入力されていたら、B行は青で塗りつぶす。
    B行には文字や数字が入力されています。

例)のような場合で、B1に赤、B2が青で塗られている場合
条件付書式を介さずに、B1やB2に色の塗りつぶしを残す方法がありますでしょうか?

条件付書式の解除(削除?)しても、A行に数字がなくて...続きを読む

Aベストアンサー

一番解り易いのは、必要なだけのセル範囲を
ExcelからWordにコピペ、続いてWordからExcelにコピペ。
以上で、条件付きでない書式を確定できます。
場合によっては、そうして得られた書式データだけを
書式貼り付けした方が編集し易い場合もあるかも知れません。

また、場合によっては、シートごと
.xpsや.pdf、.htnや.html、で一旦保存してしまう、
などの対応になります。

Excelアプリケーション単体での対応、となると、
VBAによる対応になりますが、
バージョンごとに細かく対応が分かれます。
詳しく研究なさっている方を存じあげていますが、
私としては得意なジャンルではありませんので、
もし、VBAが良ければ、その旨、補足して、
識者のご登場を数日待ってみて下さい。

Qセルの書式設定ダイアログを表示するには

エクセルVBAでセルの書式設定ダイアログを表示するショートカットキーはどうやって作るのでしょうか?
罫線、配置、パターン、表示形式、フォント、保護などの個別の表示方法は知っておりますが、その上位の「セルの書式設定ダイアログ」を表示するにはどうやったらよいのでしょうか?
よろしくお願い申し上げます。

Aベストアンサー

標準のショートカットに
Ctrl+1
でありますけど...

Qエクセル コメントの書式デフォルト設定の変更

エクセルで、コメントを挿入するときに、フォントが小さく設定されています。フォントを初めから大きく表示させたいのですが、変更方法につき、ご教示いただきたくお願いいたいします。

Aベストアンサー

takutekuです。
上手くいきませんでしたか…。
プロパティの設定のところ、ちょっとわかりにくいかもしれません。

他の方法としては、
基本形のコメントを一つ作り、
そのコメントが入ったセルをコピー
貼り付けの時に、[形式を選択して貼り付け]で『コメント』にチェックを入れて→ok
一応、一つ一つフォントサイズを変更する手間はなくなりますが…。
すっきりしたやり方ではないですね;;
これ以上は、マクロを使うことになると思いますが、
そちらの方は、初心者なのでアドバイス出来ません。すみません(;;)


このカテゴリの人気Q&Aランキング

おすすめ情報