- ベストアンサー
エクセルVBAで簡単に上付き文字を設定
エクセルで数式バーの文字を反転させてボタンをクリックすれば上付き文字になるようなコマンドボタンを作りたいのですが反転文字の認識のさせ方がよくわかりません。VBAで数式バーの反転文字の認識のしかたを教えてください。(エクセル2003を使っています。)設定したい文字が多いため ctrl+1 alt+b よりもボタンでポチッと設定したいのです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
やりたい事は分かるのですが、多分無理 理由はセルを編集可能にすると対話処理とみなされ マクロ等の対話処理以外の機能が起動しない 代替処理として下記を使用してみて ’--------------------------------------------------- Sub 数字のみ上付き設定() Dim セル As Range Dim 値 As String Dim 文字の位置 As Integer For Each セル In Selection For 文字の位置 = 1 To Len(セル.Value) 値 = Mid(セル, 文字の位置, 1) If 値 Like "#" = True Then セル.Characters(Start:=文字の位置, Length:=1).Font.Superscript = True End If Next 文字の位置 Next セル End Sub ’--------------------------------------------------- Sub 数字のみ下付き設定() Dim セル As Range Dim 値 As String Dim 文字の位置 As Integer For Each セル In Selection For 文字の位置 = 1 To Len(セル.Value) 値 = Mid(セル, 文字の位置, 1) If 値 Like "#" = True Then セル.Characters(Start:=文字の位置, Length:=1).Font.Subscript = True End If Next 文字の位置 Next セル End Sub ’--------------------------------------------------- Sub 上付下付の解除() Dim セル As Range For Each セル In Selection セル.Font.Superscript = False セル.Font.Subscript = False Next セル End Sub ’--------------------------------------------------- 使用方法は処理対象セルを選択(複数選択可) お好きなマクロを実行してください 数字しか対照にしていません 数字以外も対象だったらごめんなさい
その他の回答 (2)
- pkh4989
- ベストアンサー率62% (162/260)
これですかね。 Sub test() '取消 With ActiveCell.Font .FontStyle = "標準" .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False End With '下付き(B)設定 ActiveCell.Characters(Start:=5, Length:=5).Font.Superscript = True ' For wC = 1 To Len(ActiveCell) If ActiveCell.Characters(Start:=wC, Length:=1).Font.Superscript = True Then MsgBox "下付き(B)" End If Next End Sub
お礼
本当にご回答ありがとうございます。 しかし、少し違います。具体的に質問しなくて申し訳ありません。 例えば A B C 1 H2O CO2 Fe2OH3 などたくさんの文字列があり、文字数や上付き、下付きにしたい文字位置が異なる場合、今は”A1”セルの H2O の真ん中の ”2”を反転させてctrl+1->alt+b で下付に設定しています。また次に”B1”セルの最後の”2”を選択して同じ操作を繰り返すのですが、この作業をVBAでコマンドボタンやユーザー設定のツールバーなどをつかってセル内の文字を反転させてボタンをポチッて行いたいのです。
- pkh4989
- ベストアンサー率62% (162/260)
反転文字は、セルの選択範囲の事ですよね。 For Each C In Selection C.Font.Superscript = True '上付き(E) C.Font.Subscript = True '下付き(B) Next
お礼
早々のご回答ありがとうございます。 しかし、反転文字はセルの選択範囲でなくセルの中の文字の一部分です。
お礼
お礼が遅くなりましてすみません。 やっぱりできないのですね! ご回答は参考なります。 いろいろとご検討いただきましてありがとうございました。