エクセルで 指数表示された数字を 有効数字4桁のSI接頭辞表示(1.234E9を1.234G、1.234E-9を1.234n など)と変換するマクロを開発しています。 この時 変換したい数字の書かれたセルを選択し、右クリックメニューからマクロを呼び出す → 変換した数字がメッセージボックスにポップアップという仕様にしたいのです。
現在のところ、エクセルを立ち上げて 数字を記載したものについては 動作するマクロを開発することができましたが、 数字が記載されたCSVデータを読み込んだ場合、 CSVに記載されてあったデータについては、右クリックメニューにマクロが出てこない」というバグがあることがわかりました。
下に右クリックでマクロをメニューに呼び出すマクロを記載します。
Sub Engineering()
Dim Newb
Set Newb = Application.CommandBars("Cell").Controls.Add()
With Newb
.Caption = "AAA(右クリックメニューに表示したいマクロ名)"
.OnAction = "BBB(SI接頭辞に変更するマクロ)"
.BeginGroup = False
End With
End Sub
バグの内容の詳細を以下に記載します。
1. CSVデータ(例えば 1.234E9、-1.234e-12 が記載されたテキストファイル)を
エクセルのデータのメニューから呼び出し
A1に 1.234E9 B1に-1.234e-12が記載されているとします。
そうすると、 A1、B1以外では、右クリックメニューでAAAは表示されるのにA1,B1では
表示されない。
2. このシートをエクセルの形式でセーブして再度読み込んでも上記は改善されない。
3. A1のデータに対し BBBのマクロを実行すると、SI接頭辞に変換される。
上記の3.の試行により バグは右クリックメニューでマクロを呼び出すマクロにあると考えますが、 どうしても CSVから呼び出したデータについては 右クリックメニューにマクロを呼びだすことができません。
どのように修正すればよいか どなたかご教授ねがえないでしょうか?
No.3ベストアンサー
- 回答日時:
CSVファイルを「外部データの取り込み」から取り込むと
その部分のポップアップメニューは
「Cell」ではなく「Query」です。
「Query」についても同様にメニューに登録するか
「名前の管理」から CSVのデータ部分の名前を削除する
お好きな方法で。
ご回答ありがとうございます。
根本的原因は、bonaron様のご指摘のとおりでした。
今回 Queryが原因とご指摘していただいた 本ご回答をBAとさせていただきたいと思います。
さて、
恥ずかしながら、今回のトラブルで Queryという概念に初めて出会った次第です。
>「Query」についても同様にメニューに登録するか
>「名前の管理」から CSVのデータ部分の名前を削除する
>お好きな方法で。
補足に書いた対処療法が早いので 名前の削除で対応したいと思います。
No.2
- 回答日時:
実際問題として、肝心なマクロのほうが見せられていないのでは、なんとも答えようがないのですが……。
書き方をどうこういうというつもりはないのですが、私などは、こんなふうな書き方で続けてきたわけです。
'標準モジュール
Sub Auto_Open()
With Application.CommandBars("CELL")
.Reset
With .Controls.Add _
(Type:=msoControlButton, Before:=1, Temporary:=True)
.BeginGroup = False
.Caption = "SI表示"
.OnAction = "ConvertSIPro"
End With
End With
End Sub
それで、OnAction というのは、マクロ名ですから、完結で分かりやすいこと、なるべく英字でというところでしょうが、Caption 側は説明的でも、文字が入ればよいでしょう。
これをどこに入れるということになると、内容的の公共性からすれば、「個人用マクロブック」が最適だと、個人的には思うのです。そうでなければ、アドインとか。
ただ、肝心なマクロ自体は、なかなか難しいなって感じました。
そして、その導入部分だけの話になるのですが、
'Private ステートメントがあればよいかもしれません。
Sub ConvertSIPro()
Dim c As Variant
If TypeName(Selection) <> "Range" Then Exit Sub
Set c = Selection.Cells(1)
If VarType(c.Value) = vbDouble Then
MsgBox ConvertSI(c.Value) 'ユーザー定義関数
End If
End Sub
こんな具合でよいのでは、と思うわけで、
>A1、B1以外では、右クリックメニューでAAAは表示されるのにA1,B1では
>表示されない。
というのは、実際のマクロの問題でしょうね。さもなければ、イベント・ドリブン型のマクロが入っているとか。つまり、上記で見て分かるように、値を与えるだけのものに、セル位置などは、何ら関係はないのです。
なお、個人的に気になるのは、
12340000000 NUMBERSTRING関数では、百二十三億四千万
さて、当のマクロでは、どのような表示になるのでしょうか?
12.34G とするのか、12.3 G とするのか、1.23E+10 のままになるのか、
また、小数点以下の場合は、
-0.0000000010234 -1.0E-09 は、どういう表記をするものでしょうね。どんぴしゃりの場合はよいにしても、そうでない場合の表記とか。
ご回答ありがとうございます。
>さて、当のマクロでは、どのような表示になるのでしょうか?
12340000000の場合は、 12.34G と表記されます。
-0.0000000010234 の場合は、 -1.023nと表示されます。
5桁目を四捨五入して有効数字4桁とします。
No.1
- 回答日時:
次のように修正してみて下さい。
.OnAction = "BBB(SI接頭辞に変更するマクロ)"
↓
.OnAction = ThisWorkbook.Name & "!BBB(SI接頭辞に変更するマクロ)"
ちょっと気になるのは、”BBB(SI接頭辞に変更するマクロ)”って、サブプロシジャ名ですよね?カッコの中は引数として扱われてしまう可能性があるので、カッコなしの名前にすべきです。
ご回答ありがとうございます。 質問の仕方がわるくて申し訳ありません。 ”BBB" ’SI接頭辞に変更するマクロ の意味でした。
括弧は名前に付けておりません。
残念ながら教えていただいた 方法では、右メニューに表示させることができませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel マクロの編集がグレーに...
-
WPSOffice_マクロの有効化について
-
エクセル マクロ名にブック名...
-
エクセル ボタンに設定したマク...
-
複数のマクロボタンをまとめて...
-
エクセルの表を複数枚印刷した...
-
Excelのマクロでボタンを押すと...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルで、「いいね」のよう...
-
Excelマクロで、稼働中のマクロ...
-
エクセルマクロで、別のブック...
-
リーグ戦(10チーム2コート)作...
-
エクセルで明日の日付を表示す...
-
別シートのマクロボタンをマク...
-
Excelマクロをバックグラウンド...
-
LDPlayerのマクロの編集方法を...
-
エクセルの、記録を終了したマ...
-
エクセル ボタンを押すと色が変...
-
Excelのマクロ名の並び順の法則...
-
テキスト・データをエクセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
エクセル マクロ名にブック名...
-
Excelのマクロでボタンを押すと...
-
エクセルの表を複数枚印刷した...
-
エクセルで、「いいね」のよう...
-
Excelマクロで、稼働中のマクロ...
-
エクセルの、記録を終了したマ...
-
複数のマクロボタンをまとめて...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルマクロで、別のブック...
-
Excelのマクロ名の並び順の法則...
-
エクセルで明日の日付を表示す...
-
別シートのマクロボタンをマク...
-
(Excel VBA)シートコピー時マ...
-
マクロをマクロを使ってコピー...
-
Excel:マクロを消す方法教えて...
-
なぜマクロの記録がなくなって...
-
リーグ戦(10チーム2コート)作...
おすすめ情報
対処療法的ですが、 CSVデータにて 右クリックメニューからマクロを呼び出すことができました。 ただし マクロを書き換えたわけではありません。
以下のとおりです。
CSVで読み込んだデータを選択し右クリック→データ範囲のプロパティ→クエリの定義を保存する のチェックを外す。
以上の作業の後では、CSVで呼び出したセルについても 右クリックにAAAが呼び出されるようになりました。 理由は わかりませんが、クエリが保存されているデータについては、右クリックメニューは デフォルトのまま ということになっているようです。