
No.5ベストアンサー
- 回答日時:
たびたびすみません。
#3 です。#1 の方が紹介されたコードはマウスで選択した範囲のみ処理します。
こちらの方が便利だと思いました。
が、次の2点改造してみました。
・全角・半角数字への対応
・0で始まる数字の連続は処理対象外とする
Sub 桁区切り()
Dim Rng As Range
Dim SelectionEnd As Long
Dim RngEnd As Long
Dim RngRepEnd As Long
Dim strNum As String
Set Rng = Selection.Range
SelectionEnd = Rng.End
With Rng.Find
.ClearFormatting
.Text = "[0-90-9]{4,}"
.MatchWildcards = True
End With
Do While Rng.Find.Execute And Rng.End <= SelectionEnd
RngEnd = Rng.End
With Rng
If Left$(.Text, 1) <> "0" Then
strNum = Format$(.Text, "#,##0")
'全半角条件分岐
If StrComp(.Text, StrConv(.Text, vbWide), vbBinaryCompare) = 0 Then
'全角の場合
.Text = Replace$(StrConv(strNum, vbWide), ",", ",")
Else
'半角の場合
.Text = strNum
End If
End If
RngRepEnd = .End
SelectionEnd = SelectionEnd + (RngRepEnd - RngEnd)
.Collapse wdCollapseEnd
End With
Loop
Set Rng = Nothing
End Sub
では。
すごいです。完璧です。
ただ、ときどきできない場面があったのです。
でもそう言うときは、段落をエンターマークまで
全部選ぶとうまく行きました。
ありがとうございました。
さっそく、ツールバーにボタンをつくって
遊んでいます。
長い道のりでした。感謝です。
No.4
- 回答日時:
こんにちは。
私も、面白そうなので、KenKen_SPさんとは違うものを考えてみました。以下のマクロは、特定の数字しか変更しません。
使用例:
123456という数字を変換する。
という文章があります。そうしたら、カーソルを、1の前に持ってきて、マクロを実行します。 うまくいかなかった場合は、もう一度、先頭を指定してから、再度行ってください。誤変換してしまった場合は、Ctrl+Z で、元に戻ります。全角も変換できます。
ツールボタンに、マクロを設定しても良いですし、ショートカットに設定してもよいと思います。
ショートカット設定マクロを以下に「おまけ」でつけてあります。カーソルラインを、設定マクロに置いて、F5を押して設定したら、一旦、Normal.dot を、Ctrl+S で保存し、Word終了してから、再び、立ち上げればよいかと思います。
<設定場所は、Normal.dot の標準モジュールが望ましいです。>
ただし、WordのNormal.dot は、Excelと比較して、はるかに脆弱です。バックアップを取ったほうがよいです。
'---------------------------------------
Sub FigureAligment()
Dim myNumber As String, buf As String
Dim flg As Boolean
Selection.MoveEnd Unit:=wdWord, Count:=1
myNumber = Selection.Text
If Len(myNumber) <> LenB(StrConv(myNumber, vbFromUnicode)) Then
flg = True
End If
buf = Format$(StrConv(myNumber, vbNarrow), "#,##0")
If flg Then
Selection.Text = StrConv(buf, vbWide)
Else
Selection.Text = buf
End If
End Sub
'---------------------------------------------
'-----おまけ(ショートカットを設定するマクロ---
Sub SettingShortCut()
CustomizationContext = NormalTemplate
KeyBindings.Add _
KeyCategory:=wdKeyCategoryCommand, _
Command:="FigureAligment", _
KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyS) 'ショートカットをAlt+Sに設定
End Sub
'---------------------------------------
お。これはまた手動の味わいがあるマクロですね。
マクロってなんだかそれぞれの動きが、かわいいものですね。
桁をくぎることより、マクロ作りに熱中してきました。
いろいろご丁寧にありがとうございます。
No.3
- 回答日時:
こんにちは。
KenKen_SP です。Word の VBA サンプルコードです。ドキュメント内の3つ以上の数字の連続を
探して「桁区切り」にします。
ただ、注意が必要なのは「2005年」のように西暦に関しては、「2,005年」の
ように桁区切りにしないのが通常です。その点をカバーしてません。
あとは、適当にカスタマイズして、ツールバーのボタンにでも割り当てれば
ご希望に近いものができると思います。
Sub 桁区切り()
Selection.Find.ClearFormatting
With Selection.Find
'3つ以上の数字の連続にマッチ
.Text = "[0-9]{3,}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchFuzzy = False
.MatchWildcards = True
End With
Do While Selection.Find.Execute
Selection.Text = Format$(Selection.Text, "#,##0")
Selection.Collapse wdCollapseEnd
Loop
End Sub
では。
この回答への補足
すみません。2005年はカンマいりませんが
2005円というのはカンマほしいですね。
お礼の余計な部分は訂正削除します。
ほんとありがとうございました。
うわー思わず、とりはだ。
一日やっていたんですよ~。
できました。
2005年が、2,005年になったって
そんな細かいことどうでもいいです、やっとできました。
と思ったんですが、
数字の後ろに文字が入っている場合、対象からはずすというようなものを、付け加えられたりなんかすると
さらに完璧になるような気がしてきたのは、
欲張りでしょうか…。
No.2
- 回答日時:
「挿入」「フィールド」で
「= 数値 \# #,##0」
とすれば数値がカンマ区切りで表示されます。
でこれを利用するなら
Sub KETA()
'桁区切り
Dim SUUTI As Long
SUUTI = InputBox("桁区切りする数値を入力", "桁区切りマクロ", 0, 1, 1)
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"= " & SUUTI & " \# #,##0", PreserveFormatting:=True
End Sub
参考になりますか?
この回答への補足
ありがとうございます。
早速作っています。むずかしいものですね~。
たぶん、sub以降、Endsubまでをマクロの
編集画面で貼り付けるのですよね。
そしたらマクロ実行途中で、
「桁区切りする数値を入力」って出ます。
ここでなにを入力したらいいのか…?
もしまだみていらしたらお願いします。
No.1
- 回答日時:
ありがとうございます。
お礼も兼ねていてもうしわけないのですが
さっそくやってみたのですが、なにも変化しないのです。
やっている事と、記述とどこか違うのかと思うのですが原因がわかりません。
引き続き試してみますが…ううむ。ちなみにわたしは2003Wordです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBA B列にある前から10文字のみ表示 3 2023/08/07 11:24
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- 社会学 何故、日本は未だに数字を3桁区切りしているんですか? 例)18,000→これを18千円って言う人いま 11 2022/12/31 13:09
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
- 金融業・保険業 何故、日本は未だに数字を3桁区切りしているんですか? 例)18,000→これを18千円って言う人いま 6 2022/12/30 18:46
- iPhone(アイフォーン) web上の電話番号リンクの桁区切りが、iPhoneだと特定電話番号でおかしくなるのを解決したい 1 2023/03/28 14:27
- C言語・C++・C# プログラムについて。 4 2023/07/19 13:43
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
Excel・Word リサーチ機能を無...
-
ExcelのVBA。public変数の値が...
-
Excel マクロでShearePoint先の...
-
エクセルに張り付けた写真のフ...
-
オートフィルターとExcelマクロ...
-
Excel マクロ VBA プロシー...
-
エクセルで別のセルにあるふり...
-
一つのTeratermのマクロで複数...
-
エクセルの関数とマクロの区別
-
ExcelのVBAを使ってタイトル行...
-
メッセージボックスのOKボタ...
-
TERA TERMを隠す方法
-
ソース内の行末に\\
-
エクセルのマクロについて教え...
-
秀丸エディタ画面上からブラウ...
-
VBAのIF分で時間指定の条件式の...
-
複数ページあるPDFファイル内の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
Excel_マクロ_現在開いているシ...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelVBAでPDFを閉じるソース
-
ダブルクリックで貼り付けた画...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
Excelのセル値に基づいて図形の...
-
特定文字のある行の前に空白行...
-
エクセルマクロでワードの一ペ...
-
エクセルで縦に並んだデータを...
-
Excel VBAからAccessマクロを実...
おすすめ情報