• 締切済み

エクセルで乗数部分の書式設定

エクセルで立方メートルm3の3を上付にしたり、化学式の指数部を下付にするのはかなり面倒ですが、マクロでこの作業を簡単にしたいと思っています。ところがマクロを作ること自体が初心者なもので、このサイトで見つけて化学式の方は解決したのですが、それを参考に作ろうにもどこをどーいじっていーものやらさっぱりわからず、中々ビンゴのマクロが作れません。どなたかお力添えを。

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

分かりやすく書いたつもりです。変更したい範囲を選択して実行します。 化学式やこれらのマクロを、ツール→マクロ→マクロ→オプションでショートカットキーに割り当てれば操作性もよくなると思います。 以下は標準モジュールに貼り付けます。ご参考に。 Public Sub m3_Uetuki()   Dim rg As Range 'セル   Dim L As Integer 'カウンタ   Dim Shiki As String '式(文字列)   Dim moji As String 'mか?   For Each rg In Selection     Shiki = rg.Text     For L = 1 To Len(Shiki) - 1 '文字の長さ-1を調べる       Select Case Mid(Shiki, L, 1) '調べる文字         Case "m", "m" '半角または全角のm           Select Case Mid(Shiki, L + 1, 1) '次の文字             Case "3", "3" '半角または全角の3               '上付き文字にする               rg.Characters(L + 1, 1).Font.Superscript = True             Case Else           End Select         Case Else       End Select     Next   Next End Sub

algernon5
質問者

お礼

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

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

以前回答したことがあります。化学式を簡単に入力する方法(http://www.okweb.ne.jp/kotaeru.php3?q=133017) 上記例でいえば、下付き文字は『化学式』だからこのVBAでできています。どこからどこまでが添え字か一意に決まるからです。 質問にある平方メートルや立方メートルだけなら簡単にできますが、一般的な式を自動的に評価するのは困難でしょう。 例えば、A12はAの12乗かA1の2乗かは判別不能でしょう。(化学式のH2Oはどの文字を下付きにするかは判定できます) 今回作ってみたのは、ルールに従って入力すれば、上付き・下付きに変換するマクロです。  ○上付きのルール・・・開始位置に『^』を入力し、終了位置に『スペース1個』  ○下付きのルール・・・開始位置に『_』を入力し、終了位置に『スペース1個』 例えば、   f_x =X^n +Y^n =Z^n  や   9^3 +10^3 =12^3 +1^3 や m^2、m^3、H_2 O のように入力します。 かなり長くなってしまいました。標準モジュールに貼り付け、セル範囲を選択して実行します。 Public Sub UesShitatukiMoji()   '上付き、下付き文字は『^』、『_』と『スペース1個』で挟まれている前提!   '1つのセル内に100個の上付き、下付き文字まで可能   Dim rg As Range 'セル   Dim Moji As String 'セルの式(文字列),最初の文字列   Dim pUp As Integer, pDw As Integer '上付き位置、下付き位置   Dim UPorDW(100) As Boolean '上付きか下付きか   Dim p1(100) As Integer, p2(100) As Integer '『^』or『_』と『スペース』の位置   Dim cot As Integer, ss As Integer 'カウンタ   For Each rg In Selection     Moji = rg.Text & " "     Moji = Application.Substitute(Moji, "^", "^") '全角なら半角に置き換える     Moji = Application.Substitute(Moji, "_", "_") '全角なら半角に置き換える     Moji = Application.Substitute(Moji, " ", " ") '全角なら半角に置き換える     cot = 1     pUp = InStr(1, Moji, "^") '上付き     pDw = InStr(1, Moji, "_") '下付き     UPorDW(cot) = SUPERorSUBscript(pUp, pDw)     If pUp = 0 Then pUp = pDw     If pDw = 0 Then pDw = pUp     p1(cot) = WorksheetFunction.Min(pUp, pDw)     While p1(cot) > 0       If p1(cot) > 0 Then 'べき乗の位置を調べる         p2(cot) = InStr(p1(cot) + 1, Moji, " ")       End If       cot = cot + 1       pUp = InStr(p2(cot - 1), Moji, "^")       pDw = InStr(p2(cot - 1), Moji, "_")       UPorDW(cot) = SUPERorSUBscript(pUp, pDw)       If pUp = 0 Then pUp = pDw       If pDw = 0 Then pDw = pUp       p1(cot) = WorksheetFunction.Min(pUp, pDw)     Wend     '『^』と『_』と『スペース』を削除する     For ss = cot - 1 To 1 Step -1       Moji = Left(Moji, p2(ss) - 1) & Right(Moji, Len(Moji) - p2(ss))       p2(ss) = p2(ss) - (ss - 1) * 2       Moji = Left(Moji, p1(ss) - 1) & Right(Moji, Len(Moji) - p1(ss))       p1(ss) = p1(ss) - (ss - 1) * 2     Next     If cot > 1 Then '上付きまたは下付き指定があった場合       rg = Moji     End If     '上付きまたは下付き文字にする     For ss = 1 To cot - 1       If UPorDW(ss) Then         rg.Characters(p1(ss), p2(ss) - p1(ss) - 1).Font.Superscript = True       Else         rg.Characters(p1(ss), p2(ss) - p1(ss) - 1).Font.Subscript = True       End If     Next   Next End Sub '上付きにするか下付きにするか判定する関数(上付きがTrue) Public Function SUPERorSUBscript(Upot As Integer, Dpot As Integer)   If Upot > 0 Then     SUPERorSUBscript = True     If Dpot > 0 Then       If Dpot < Upot Then         SUPERorSUBscript = False       End If     End If   End If End Function

algernon5
質問者

補足

>質問にある平方メートルや立方メートルだけなら簡単にできますが、・・・ まさにそれが欲しかったりします。複数の人に浸透させ たいので、できればルール入力なしでやりたいです。 mの後ろの3は上付にしたい(それ以後の文字は普通) というマクロがあるだけで充分今より楽になります。 &よく使う化学記号は決まっていて、 H2SO4、H2O2、CaCO3、CaF2、--(OH)2 FeCl3、--(OH)3、NH3、NH4 (頻用順)です。 また、A列は化学記号が、C列にm3など単位つきの数字 (式)が入る項目である事が予想できる雛形を使用しての 作業です。選択範囲内だけに各定義のマクロをながす こまめな方法になっても構いませんのでお教え下さい。 マクロは使いたいけど作り方やアレンジの仕方はさっ ぱりわからないものでよろしくお願いします。

  • brogie
  • ベストアンサー率33% (131/392)
回答No.1

>このサイトで見つけて化学式の方は解決したのですが、 どのように、解決されたのでしょうか? それがわかれば、マクロについては、詳しい方が沢山居られますから、回答をもらえるかも知れません。補足お願いします。

関連するQ&A

  • OFFICE EXCELマクロの初期設定方法

    現在、EXCELのマクロを使って作業を進めています。 作業上、必ず最初に行う作業があるのですが、 面倒なのでマクロ処理化しました。 決まった作業なので、新しくファイルを作る時も、 マクロの内容をどこかに保存していたtextから コピーアンドペーストして、いちいち マクロ → 編集 → (コピーアンドペースト) → 実行! という流れで現在行っているのですが、大変面倒です。 「microsoft excel」を起動した瞬間から、 作成したマクロを(EXCELに)組み込んでおく方法はないでしょうか? マクロというよりOFFICEの設定になるかもしれませんが、 教えていただけないでしょうか?

  • 文字を下付にするマクロを教えて

    やりたいことは、マクロの中で ExcelファイルとWordファイルの行き来です。 具体的には、Word文章で文字の下付を走らせたいです。 Excelのシート「条件設定2」に下付けしたい文字を入力しておき、そのデータを読みとってWord文章で下付したいです。 マクロのイメージは次のように考えています。   Windows("マクロ集").Activate   Sheets("条件設定2").Select 対象文字 = Cells(17,12)  …… L17セルの 「TiO2」 下付文字 = Cells(17,13)   …… M17セルの 「2」   Set 対象ファイル = GetObject(, "Word.Application") Windows(対象ファイル).Activate    上記の「対象文字」、「下付文字」データでWord文章の文字下付を行う。

  • IME98OR2000で立方メートルはある?

    会社のPCはIME98なんですが、立方メートル(m3)のフォントが無いみたいですが、どうやれば入力できますか? 「3」を右肩に小さくしたいのですが・・・ ちなみに、エクセル、ワードなどでです。

  • エクセル マクロが削除できないです・・・

    あるエクセルファイルを開くと、マクロを有効にするかどうか聞いてくるのが面倒で、ヘルプに従って削除しようとしたのですが、【ツール】⇒【マクロ】⇒【マクロ】⇒マクロの保存先ボックスで→作業中のブックを選択しても、マクロがひとつも表示されず、削除できません。 どうしたら削除できますでしょうか? お教えいただけましたら非常に嬉しいです。 よろしくお願い致します。

  • 立法メートルの印刷が出来ない

    エクセルの表の単位入力で IMEで立方メートルをm3に変換し 印刷プレビューで確認したのですが、印刷してみると□(四角)の表示がされてしまいます。何故なのでしょうか?

  • 【条件付き書式】では設定できないセルの色分け設定方法について

    こんばんは。いつもお世話になっております。 早速ですが、下記のような作業をしたいのですがマクロを使用せずに条件付き書式で出来るかと思い、挑戦したのですが出来ませんでした(汗) ◆エクセルのバージョン → エクセル2003 ◆データ項目 A1(氏名)/B1(性別)/C1(取得ID)…略… K1(参考URL) という項目で、件数は毎月変動しますがMAXで60件ほどです。 ◆やりたい事=セルの色を自動的に色分けさせたい C列(取得ID)に“1”が入力されたら、その行全て(セルA~セルK)のセル色を水色に、“2”が入力されたらピンクに、“3”が入力されたら黄緑にしたい。 マクロを使用しなくてはならなさそうなのですが、私はマクロを一切、使ったことが無い為、皆目検討がつきません…。 勉強不足で恐縮ですが、どなたかお手すきの方いらっしゃいましたら、どうぞご教授願います。

  • 高圧ガス保安法の解釈

    高圧ガス保安法について教えてください。高圧ガス保安法における1立方メートルとは大気圧での容積でしょうか?それとも圧縮状態での容積でしょうか?  たとえば、窒素ボンベの7m3とは、大気圧に開放すると7m3ですが、ボンベ内の容積は47リットルですよね。  現在、アルゴンボンベと窒素ボンベを配管溶接作業のために現場にストックしていますが、姫路市火災予防施行規定において、50立方メートル以上は消防署長に届け出なければならない、とパトロールで指摘されました。  大気圧での容積だとすると、50m3 ÷ 7m3/本 ≒ 7本 となり、届出しない場合、現場に7本しか置けません。  7本程度で届出が必要なんて、私には常識的に理解できません。消防署に行って聞いてみましたが、担当者もどちらかはよく分からないとのことで弱っています。  現場での溶接作業を考えると、毎日午前・午後、窒素ビンを入れ替えしなければならず、大変弱っています。  この1立方メートルとは、どの状態での容積なのか、はっきりと説明、定義しているもの (法や省令がありがたいです) はないでしょうか?

  • エクセルを閉じる時にマクロを実行する

    お世話になります。 エクセルのファイルを閉じる時にあるマクロを実行したいと思っています。 右上の×印をクリック、Alt+F4、Alt+F→X などエクセルを閉じようとしたときに自動的にマクロを動かすことが出来るでしょうか? マクロ自体は、あるシート全体をコピー→外のシートに形式を選択して貼り付け(値) というごく簡単なものです。 また参考までにエクセルファイルを開いたときにマクロを実行というものがあれば教えてください。 よろしくお願いします。

  • Excel 操作したいbookをActiveにする

    こんにちは。 Excel 2007を使用しています。 今、作業手順がマクロで書いてあるファイルをmacro.xlsm 操作したいファイルをobject.xlsxとします。(名前は適宜変わります) また、両方のファイルをExcelで開いておきます。 マクロを実行させたいのですがmacro.xlsmをActiveにしないと マクロが実行できませんし、macro.xlsm自身を操作対象として 作業が始まってしまいます。 一番望ましいのはmacro.xlsmをActiveにしてマクロ開始キー (Ctrl+Shift+M) または「ボタン」などで対象となるファイルを選択して 操作を実行させたいのです。 なお条件としてExcelには上記の2つのファイルしか開いていません。 方法をご存じの方お教えください。

  • Excelの指数表示

    Excelで13桁の数値を入力すると、指数表示に成ってしまいます。 表示形式を数値にすれば、通常の13桁の表示になりますが、操作しなくても、標準で13桁表示させる方法がありましたら、教えてください。 CSVから、読み込むと変更作業が面倒なんです。 JANコード等を使う機会が多いので、よろしくお願いいたします。

専門家に質問してみよう