こんにちは、エクセルのVBAについてあまり詳しくないのでお力を貸していただけると幸いです。
具体的にしたいことは、例えばA1からB5までの範囲を選択した後にマクロを実行すると、その全セル内の()を検出し、(いぬ)などの場合には( いぬ )と両側に半角で5つずつのスペースを入れられるようなものは出来ないでしょうか?
また、1つのセル内に、(いぬ)と(ねこ)など()で囲ってあるのものが2つ以上ある場合にも( いぬ )と( ねこ )と働くようなものを作ることは可能でしょうか?
現在は( )、()内にスペースが入力されているものが入力されるマクロを使って、後々その中に手打ちして埋めている状態です。
No.1
- 回答日時:
置換してしまうのが楽だと思います。
以下のようなものではどうですか?--------------------------------------------------------------------------
Sub スペース追加()
Selection.Replace What:="(", Replacement:="( "
Selection.Replace What:=")", Replacement:=" )"
End Sub
--------------------------------------------------------------------------
No.2
- 回答日時:
No.1 の追記
もし間違えて同じ箇所を数回やってしまってもスペースは1つだけにしたいのならば以下のようにしてみてください。
--------------------------------------------------------------------------
Sub スペース追加()
Selection.Replace What:="( ", Replacement:="("
Selection.Replace What:="(", Replacement:="( "
Selection.Replace What:=" )", Replacement:=")"
Selection.Replace What:=")", Replacement:=" )"
End Sub
--------------------------------------------------------------------------
No.3
- 回答日時:
>>範囲を選択した後に
これが結構面倒、複数セルがアクティブになっているので、左上先頭位置と列数・行数を取り込み・・・。
エクセルで範囲をマウスで選択して「置換」した方が手っ取り早い。
"(" → "( "へ置換
")" → ") "へ置換
VBAでやらないと、どうしても駄目??
No.4
- 回答日時:
自分もマクロで処理するよりも「置換」で
”(” を ”( ”
”)” を ” )”
とすることを勧めます。
マクロで行う場合も指定した範囲に対して「置換」をそのまま実行するだけです。
(記録マクロで作れるレベルです)
・・・余談・・・
なぜかこのサイトでは半角スペースを2つ以上続けて入力しても半角スペース1つとして表示されるので、回答には全角スペースを使っています。
他にも、行頭に対しても半角スペースが使えないという制限があるんですよね。
ですので、ここで長く回答されている人は質問文に対して
「両側に半角で5つずつのスペース」なのに「( いぬ )と( ねこ )」ってどういうこと?
なんて思いません。
安心してください。
(気づいていない人もいる事はナイショ)
置き換えの機能を失念していました…仰るとおり、これでも十分代用できますね。半角のスペースに関しても今後は全角にします。ありがとうございました!
No.5ベストアンサー
- 回答日時:
こんにちは。
マクロにするというのは、ユーティリティにしたいとおっしゃっていることだと思います。一回きりならともかく、何度も同じようなことが出てくるのを一瞬で変えようとする場合を想定しました。
その場合は、個人用マクロに入れて、ショートカットを設定します。
以下の場合は、正規表現にするのは、もう少し複雑な内容の可能性を想定しているからです。
.Pattern = "[(\(](.+?)[\) )]"
そのパターンを書き換えさえすれば、いろんな対応が可能です。
また、1つの言葉に対して、スペースが5個ずつでしたら、
c.Value = .Replace(buf, "(" & Space(5) & "$1" & Space(5) & ")")
とすれば、5個になります。
括弧の中の文字を消すとか、簡単にできてしまいます。
c.Value = .Replace(buf, "(" & Space(1) & " " & Space(1) & ")")
また、少し変えることによって、括弧の中に、順に数字を入れて試験問題を作ることなどが可能です。もちろん、文章の中の括弧を意味します。
( 1 )
( 2 )
( 3 )
( 4 )( 5 )
( 6 )( 7 )( 8 )
のようなことも可能です。
'//
Sub EnterSpaces()
Dim Rng As Range
Dim RegEx As Object
Dim buf As String
Dim Ms As Object, c As Range
If TypeName(Selection) <> "Range" Then Exit Sub
Set Rng = Selection
If Application.CountA(Rng) = 0 Then MsgBox "データがありません", vbExclamation: Exit Sub
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Global = True
.Pattern = "[(\(](.+?)[\) )]"
For Each c In Rng
buf = Replace(c.Value, Space(1), "")
Set Ms = .Execute(buf)
If Ms.Count > 0 Then
'上書きモード
c.Value = .Replace(buf, "(" & Space(1) & "$1" & Space(1) & ")")
End If
Next
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
閲覧注意 無数のフジツボに寄生...
-
RNAの選択的スプライシングとプ...
-
クローン技術の長所と短所について
-
これらのことわざ と 意味の違...
-
実の弟とのセックス
-
生物 (2)はaが答えなのですが、...
-
さよなら三角またきて四角
-
黒いちいさなイモムシについて。
-
大好きな愛猫が天国へ行きました。
-
略語がわからない
-
顕微鏡
-
修飾とは?
-
急性毒性の表記記号の意味
-
近親相姦(実の親子)について
-
人間のメスは何故、胸やお尻を...
-
光るはオヤジのハゲ頭
-
60kgの人が一日に使用するATPは...
-
生物の成功とは繁殖と生存です...
-
「何をおっしゃるうさぎさん」由来
-
犬のことを『わんこ』って言う...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
閲覧注意 無数のフジツボに寄生...
-
実の弟とのセックス
-
クローン技術の長所と短所について
-
略語がわからない
-
これらのことわざ と 意味の違...
-
単為生殖生物とクローンの違い...
-
「何をおっしゃるうさぎさん」由来
-
RNAの選択的スプライシングとプ...
-
修飾とは?
-
フランス語で「ふわふわ」を何...
-
人間のメスは何故、胸やお尻を...
-
さよなら三角またきて四角
-
GWは実家へ帰省しますか? 東京...
-
生物の成功とは繁殖と生存です...
-
床に謎の黒い跡
-
光るはオヤジのハゲ頭
-
急性毒性の表記記号の意味
-
for next の不連続版があるでし...
-
植物でも動物でも無い生物
-
インコの夜用の布について。 イ...
おすすめ情報