下方のマクロを実行することにより、
文字列リストの内容に基づいて、
別シート(作業)内の文字列を変換することができます。
文字列からコード値へ変換することを目的にマクロを埋め込んだのですが、
別シート(作業)の文字列をコード値に変換した際、3桁くぎりのコード値が並んだ場合に、
自動で数値として認識されてしまいます。
※別シート(作業)のセルを文字列し設定しても発生します。
プログラムで回避手段があるようでしたらご教示いただければ幸いです。
例)文字列リストシート
A B
さる 10
ぞう 15
ごりら 101
きりん 102
わに 103
かば 104
マクロ実行前の作業シート
A
さる,ぞう
ごりら
ごりら,きりん,わに
さる,ごりら
マクロ実行後の作業シート
A
10,15
101
101102103
10101
上記マクロ実行後のシートの3~4行目のように、
カンマが取れることを防ぎ、文字列として代入したい所存です。
<マクロ>
Sub 文字列リストに基づき連続して置換する()
i = 2
Do
x1 = Sheets("文字列リスト").Cells(i, 1)
x2 = Sheets("文字列リスト").Cells(i, 2)
Sheets("作業").Cells.Replace _
What:=x1, Replacement:=x2, _
SearchOrder:=xlByColumns, MatchCase:=True
i = i + 1
Loop Until Sheets("文字列リスト").Cells(i, 1) = ""
End Sub
ご教示いただければ幸いです。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
力技ですが・・・
文字列として認識されるよう置換される数字の前に「'」をつけて置換し、
その場合、「,」後ろの文字置換に関しては「'」が余計なので、
最後に「,'」を置換という方法です。
Sub 文字列リストに基づき連続して置換する()
i = 2
Do
x1 = Sheets("文字列リスト").Cells(i, 1)
x2 = "'" & Sheets("文字列リスト").Cells(i, 2)
Sheets("作業").Cells.Replace _
What:=x1, Replacement:=x2, _
SearchOrder:=xlByColumns, MatchCase:=True
i = i + 1
Loop Until Sheets("文字列リスト").Cells(i, 1) = ""
'このままだと2つ目以降の置換では「'」が表示されるので「,'」を「,」に置換
x1 = ",'"
x2 = ","
Sheets("作業").Cells.Replace _
What:=x1, Replacement:=x2, _
SearchOrder:=xlByColumns, MatchCase:=True
End Sub
No.2
- 回答日時:
私は2007ですが、問題なくマクロは実行しますね。
カンマが無くなるような事は無いですA列の文字列の後にカンマが入ってるなんて事はありまんよね?
変数X1をStrで文字列指定してみては?
Str指定すると空白が挿入される事があるのでTrimで空白削除
What:=x1, Replacement:=Trim(Str(x2)),_
ご教示くださいまして、ありがとうございました。
Office 2010を使用しておりますが、同バージョンだと解決しませんでした。
バージョンによって差があるようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Visual Basic(VBA) VBA B列にある前から10文字のみ表示 3 2023/08/07 11:24
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名を特定の文字までを...
-
Googleスプレッドシートでワイ...
-
IME 郵便番号辞書 で 都道府...
-
正規表現で完全一致したキーワ...
-
【正規表現に詳しい方】ダブル...
-
二重の拡張子の一部を消す。
-
ワードを使用した特定かつ複数...
-
《》で囲まれた文字をすべて削...
-
正規表現で最初にマッチしたも...
-
PS4コントローラーをPCでゲーム...
-
wordの何も書かれていない2ペー...
-
友人とのラインで 「~MBと書く...
-
Chr(13)とChr(10)の違いは?
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
エクセルでアルファベットか数...
-
Excelで指数表現しないようにす...
-
printfとputcharの違いは
-
パワーポイントで文字の上に線...
-
詳しくないので、どなたかお教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleスプレッドシートでワイ...
-
《》で囲まれた文字をすべて削...
-
TeraPadでの置換方法
-
IME 郵便番号辞書 で 都道府...
-
ファイル名を特定の文字までを...
-
正規表現で完全一致したキーワ...
-
正規表現で最初にマッチしたも...
-
ファイル名に空白がある時、一...
-
メモ帳の置換機能で特定の文字...
-
【正規表現に詳しい方】ダブル...
-
秀丸で置換かマクロで括弧をと...
-
Flexible Renamerの検索と置換...
-
CSVファイルの文字列を置換...
-
Flexible Renamer 半角スペー...
-
WinMergeにて置換の際に、文字...
-
(*)を_【*】に一括変換したいの...
-
Flexible Renamerの正規表現に...
-
EmEditorでの置換方法
-
ワードを使用した特定かつ複数...
-
二重の拡張子の一部を消す。
おすすめ情報