Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2013)
コンテキストメニューに文字列の色などを変えるマクロを登録したいです。
投稿日時: 18/10/03 13:54:26
投稿者: ジョンのおばちゃん

何時も教えていただいて感謝しております。今回も分からずまたお力添えお願いいたします。
 
セル内の 、「一部の文字列」 に対して(セル内全体のフォントなどを変えるので無く)
色や太さ、サイズなどを変えるマクロを「コンテキストメニュー(右クリックででるメニュー)」に加えたいのです。
 CommandBars("cell").Controls.Add(Type:=msoControlButton) の中の "cell" を変えれば出来ると考えますが、どう変えれば良いのか分かりません。
 
セルをダブルクリックして編集状態にした後、一部の文字列を選択し右クリックすると以下のメニューが出ます。
・切り取り、・コピー、・貼付、・セルの書式設定、・ドロップダウン…、・再変換(グレー)
 
この中に文字列書式変更(色・緑、太字、塗りつぶし)が出来るマクロを表示させたいのです。
クイックアクセスツールバーや、マクロボタンではセル全体が代わってしまいます。
cell、Row、Column などは見つけたのですが文字列を表す語句が分かりません。
どうしてもと言うほど困ってはいないのですが、見つけると随分便利になると思いますし、気になって仕方ありません。
どうぞお知恵をお貸し下さいますよう、お願いいたします。

回答
投稿日時: 18/10/03 15:06:13
投稿者: WinArrow
投稿者のウェブサイトに移動

セル内の一部の文字列を変更する手操作をマクロの記録でコード作成すると
ヒントが得られると思います。
 
多分、「どこから、??文字分」という指定と
「??色」「??サイズ」という指定が必要になるはずです。
それらをどのようにしているのかを、先に考える必要があると思います。

回答
投稿日時: 18/10/03 15:26:37
投稿者: WinArrow
投稿者のウェブサイトに移動

> CommandBars("cell").Controls.Add(Type:=msoControlButton) の中の "cell" を変えれば出来ると考えますが、どう変えれば良いのか分かりません。
 
 
>CommandBars("cell")
は、セルを右クリックで表示されるメニューを意味しているので
ここの"cell"を変えるkとはできません。
 
ここでは、「○○を実行するマクロ」の名前を登録するのみです。
 
従って、
「○○を実行するマクロ」内で、対象セルを判別するコードも必要になってみます。

投稿日時: 18/10/03 15:27:01
投稿者: ジョンのおばちゃん

さっそくありがとうございました。試してみます。お世話になりました。

投稿日時: 18/10/03 15:41:18
投稿者: ジョンのおばちゃん

重ね重ねありがとうございます。セルに対応するので無く、「セル内の一部の文字列」に対処させたいのです。

回答
投稿日時: 18/10/03 15:56:05
投稿者: WinArrow
投稿者のウェブサイトに移動

参考コード
 
選択されているセルの文字列の一部を変更するコード
前提条件
桁位置、長さ、色(数字で)、フォントサイズ、
フォントスタイルを、INPUTBOXで指定しています。
これらの情報をどのようにして入力させるかは、あなたが考えてください。
なお、一部の文字列の書式変更は、数式が入っているセルには適用できません。
Sub test()
Dim ICHI As Long, NAGASA As Long, IRO As Long, FontSize As Long, FSTYLE As String
 
    ICHI = InputBox("桁位置")
    NAGASA = InputBox("桁数")
    IRO = InputBox("文字色")
    FontSize = InputBox("フォントサイズ")
    FONTSTYLE = InputBox("フォントスタイル")
     
    With ActiveCell
        With .Characters(Start:=ICHI, Length:=NAGASA).Font
            .Color = IRO
            .Size = FontSize
            .FontStyle = FSTYLE
        End With
    End With
End Sub

回答
投稿日時: 18/10/03 15:58:44
投稿者: WinArrow
投稿者のウェブサイトに移動

ジョンのおばちゃん さんの引用:
重ね重ねありがとうございます。セルに対応するので無く、「セル内の一部の文字列」に対処させたいのです。

 
これは理解して回答しているつもりです。
誤解する表現がありましたら、すみません。

投稿日時: 18/10/03 16:16:30
投稿者: ジョンのおばちゃん

WinArrow 様、始め皆様。お時間を頂いてありがとうございました。
もうすこし、考えて見ます。コードもご親切にご表示頂けたのに感謝しています。
 
奥が深いVBAの森を恐る恐る手探りで進んでまいります。またお教えいただけたら嬉しいです。ありがとうございました。