- ベストアンサー
化学式を簡単に入力する方法
エクセル2000で化学式を大量に入力したいのですが、 現在はH2Oなどの数字部分をいちいち下付きに変更しています。 (かなり面倒です) これをもっと簡単に入力する方法はないでしょうか? 出来れば「水」と入力して「H2O」と表示させたいのですが、 単語登録、VLOOKUP関数、入力規則(リスト)、オートコレクト 以上のものは全部試してみたのですが、 いずれも一部分だけの下付きは出来ませんでした。 セルをコピーすると出来るんでしょうけど、 他に方法があったら教えて下さい。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
指摘のあったパターンと『小文字、2桁以上の数値』を可能にしました。 少し書き方を変えています。次を下付きにする文字と解除する文字を分けていますので、追加・修正は容易かと思います。標準モジュールに貼り付けます。 Public Sub ShitaTukiMoji() Dim rg As Range '選択した範囲 Dim L As Integer '文字カウンタ Dim Shiki As String '化学式 Dim maeKigo As String '数値の前の文字は元素記号? Dim sitatukiFlg As Boolean '下付にする、しない For Each rg In Selection Shiki = rg For L = 2 To Len(Shiki) '全角入力を考慮 maeKigo = StrConv(Mid(Shiki, L - 1, 1), vbNarrow) Select Case maeKigo Case "A" To "Z", "a" To "z", ")" 'この文字の次の数字は下付きにする sitatukiFlg = True Case "・", "(", "+", "-", "=", " " 'この文字の次の数字は下付きにしない sitatukiFlg = False End Select If sitatukiFlg Then If IsNumeric(Mid(Shiki, L, 1)) Then '数字なら下付文字にする rg.Characters(L, 1).Font.Subscript = True End If End If Next Next End Sub
その他の回答 (4)
- nishi6
- ベストアンサー率67% (869/1280)
>もう一つ質問なんですが、「ショートカットキーに割り当てる」 >とはどのようにしたらいいんでしょうか?? マクロを登録したらシートに戻って、ツール→マクロ→マクロ で出てくるダイアログボックスでマクロを選択し、オプションボタンを押すとマクロオプションダイアログボックスが出てきます。Ctrl+の右のテキストボックスに半角アルファベット(例えばZ)を入力します。 これでこのマクロは Ctrl+Shifh+Z キーで起動します。 CtrlとShifhキーを押しておいてZキーを押す要領です。
補足
対応出来ない化学式があったので補足させてください。 Mg(NO3)2・6H2O ↑ ↑ この数字は下付きに変換されるのですが、 ( )の後ろの2が変換されません。 こういう形式の化学式は他にもたくさんありますので、 マクロで一度に変換できれば、、、と思いまして。。。 可能であればお願いできないでしょうか? ショートカットキーの解説ありがとうございました♪
- maruru01
- ベストアンサー率51% (1179/2272)
No.1のmaruru01です。 Vectorで検索したら、下記のURLのソフトがありました。 ただし、シェアウェアソフトなので私は試してません。 mimi1504さんの使用意図に沿うかどうかもわかりませんが、 参考までに。
お礼
こんな便利なものがあったんですね(*^0^*) 実はこれを必要としているのは姉なんです。 さっそく報告します! ありがとうございました。
- nishi6
- ベストアンサー率67% (869/1280)
マクロを作ってみました。 最初は普通に入力し、下付文字にしたいセル(複数可)を選択して実行します。ショートカットキーに割り当てると早いと思います。 H2Oなら2文字目の2を、H2O+H2O=2H2O (?) は2H2Oの最初の2は下付きにはしないはずです。対応できない式があったら補足して下さい。化学式も忘れてしまいました・・・ ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに貼り付けます。 '(Public Sub ~ End Sub の範囲です) Public Sub ShitaTukiMoji() Dim rg As Range '選択した範囲 Dim L As Integer '文字カウンタ Dim Shiki As String '化学式 Dim maeKigo As String '数値の前の文字は元素記号? For Each rg In Selection Shiki = rg For L = 2 To Len(Shiki) maeKigo = StrConv(Mid(Shiki, L - 1, 1), vbNarrow) '全角入力を考慮 '分子の数、元素のみの数の場合は下付にしない。(例)2H2Oの最初の2など If 65 <= Asc(maeKigo) And Asc(maeKigo) <= 90 Then If IsNumeric(Mid(Shiki, L, 1)) Then '数字なら下付文字にする rg.Characters(L, 1).Font.Subscript = True End If End If Next Next End Sub
補足
感激です!痛快です!どうもありがとうござました。 実はこれを必要としているのは私の姉なので、 すべての化学式に対応出来るかどうか、試してもらいます。 もしダメだったら、またよろしくお願いします。 もう一つ質問なんですが、「ショートカットキーに割り当てる」 とはどのようにしたらいいんでしょうか??
- maruru01
- ベストアンサー率51% (1179/2272)
IME2000の単語登録は出来ますよ。 Windows2000の場合、スタートメニュー→プログラム→アクセサリ→システムツールの中に「文字コード表」があります。 その中に上付きと下付きの数字や+-などの記号があります。(少なくともゴシックと明朝には) で、例えば下付きの"2"を、コピーする文字のところで選択して、その前後に"H"と"O"を付けてコピーし、IMEの単語登録を呼び出せば語句の欄に"H下付き2O"が入るので、読みに"みず"とでも入れて登録すればOKです。 上付きもあるのでイオン式もOKです。 あとは、必要なものを片っ端から登録していきます。 ちなみに、ExcelはOKですが、アプリケーションによっては文字化けします。 とりあえず、こんな力技しか思いつきません。 ひょっとすると、IME対応の化学式辞書のようなものがあるかも知れません。 Vectorなどのダウンロードサイトをのぞいてみては? では。
お礼
アドバイスどうもありがとうございます。 教えて下さった文字コード表から下付きの数字を探したのですが、 見つけられませんでした。(^^;) Windows2000じゃないからでしょうか・・・
お礼
お礼が遅れて申し訳ありません。 何度もわがままな質問に回答いただきありがとうございます。 姉が大変喜んでおりました。 マクロっておもしろいですね♪