マクロで下記の作業を行いたいのですがよくわかりません。
アドバイスお願いします。
■作業内容
『Excelでsheetにある全角の文字を一括で半角に置換したい』
※基本的に半角にできるもの(カナ・英数字・記号)は全て半角にしたいのですが、『~』だけは半角にしたくありません。
■画面のイメージ
・sheet1にはマクロを組み込んだボタン画面
・sheet2に全角のデータA
・sheet3にデータAを半角にしたデータA’が返される
■作業イメージ
(1)sheet1のボタンをクリック
(2)sheet2のデータを半角にしてsheet3に返す
(3)『~』を『~』に置換し直す。
すみませんがよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
(2)sheet2のデータを半角にしてsheet3に返す
→sheet2のデータをsheet3にコピペし、その後半角化できるものは半角化する。
(3)『~』を『~』に置換し直す。
というマクロです。
Sub test01()
Sheets("Sheet3").Cells.Clear
With Sheets("Sheet2")
If WorksheetFunction.CountA(.Cells) > 0 Then
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).Copy
Else
Exit Sub
End If
End With
With Sheets("Sheet3")
.Range("A1").PasteSpecial
Application.CutCopyMode = False
For Each c In .UsedRange
c.Value = StrConv(c.Value, vbNarrow)
Next
.Cells.Replace What:="~~", Replacement:="~", LookAt:=xlPart
End With
End Sub
ご回答ありがとうございます。
早速使わせていただきました。
イメージしたとおりの結果となり、大満足です。
どうもありがとうございました。
助かりました。
No.1
- 回答日時:
こんにちは。
>基本的に半角にできるもの(カナ・英数字・記号)
カナはカタカナだと思いますね。ひらがなも必要なら半角は可能です。
>(3)『~』を『~』に置換し直す。
良く分かりませんが、『~』を置換しなければよのでは?
'Option Explicit
Dim RegExp As Object
Private Sub CommandButton1_Click()
Dim c As Range
If WorksheetFunction.CountA(Worksheets("Sheet3").Cells) > 0 Then
If MsgBox("Sheet3に、文字が入っていますが、削除しますか?", vbQuestion + vbOKCancel) = vbCancel Then
Exit Sub
Else
Worksheets("Sheet3").Cells.Clear
End If
End If
If WorksheetFunction.CountA(Worksheets("Sheet2").Cells) > 0 Then
Worksheets("Sheet2").UsedRange.Copy Worksheets("Sheet3").Cells(1, 1)
Application.ScreenUpdating = False
For Each c In Worksheets("Sheet3").UsedRange.Cells
If VarType(c.Value) = vbString Then
c.Value = OneByteWordChange(c.Value)
End If
Next c
End If
Application.ScreenUpdating = True
Set RegExp = Nothing
End Sub
Private Function OneByteWordChange(ByVal txt As String) As String
Dim rep As String
Dim buf As String
Dim Matches As Object
Dim Match As Object
If RegExp Is Nothing Then
Set RegExp = CreateObject("VBScript.RegExp")
End If
With RegExp
.Global = True
.IgnoreCase = False
.Pattern = "[\u30A1-\u30FA\uFF01-\uFF5D]+"
If .Test(txt) Then
buf = txt
Set Matches = .Execute(txt)
For Each Match In Matches
rep = StrConv(Match, vbKatakana + vbNarrow)
buf = Replace(buf, Match, rep, , , vbBinaryCompare)
Next
OneByteWordChange = buf
Else
OneByteWordChange = txt
End If
End With
End Function
ご連絡が遅くなってしまい申し訳ありません。
>良く分かりませんが、『~』を置換しなければよのでは?
なるほど、無理に置換しなくてもいいですね。
ご回答ありがとうございました。
参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- Excel(エクセル) 【マクロ】フォルダを2つのモニターの定位置に並べたい 2 2022/09/02 01:14
- Excel(エクセル) 【マクロ】フォルダを3つ、POモニター上に、決まった並べ方をしたい 4 2022/08/31 11:05
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) エクセルでのデータの統一に関して リストを作成する際、元データをコピペでリストに転記しており、元デー 2 2022/08/31 15:33
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】先頭だけにある、半角...
-
半角の『°(単位の度)』
-
メールアドレスの上ハイフン入...
-
関数を使わずに一括で全角を半...
-
テプラは半角数字が使えますか?
-
半角の×(かける)は?
-
ギリシャ文字 μの出し方
-
半角英数で♭の入力
-
お名前(姓)」には「カタカナ(...
-
℃の半角表示
-
Word のスペースキーの半角を...
-
Android Gboardで楽に全角・半...
-
契約書や 公文書・私文書などに...
-
【VBA】ファイルパスに半角スペ...
-
回答例が見つからなかったので...
-
amazonでのクレジットカード入...
-
WEBでのエントリーで半角?
-
問2 次の文中の空欄にあてはま...
-
エクセルでセルの連結の逆
-
EXCELで、セル内の半角カ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テプラは半角数字が使えますか?
-
半角の『°(単位の度)』
-
メールアドレスの上ハイフン入...
-
半角スペース
-
契約書や 公文書・私文書などに...
-
半角の×(かける)は?
-
EXCELの文字列操作で文字数不足...
-
関数を使わずに一括で全角を半...
-
EXCEL95 VLOOKUP関数で半角と全角
-
℃の半角表示
-
Excel2016 検索の窓を常時表示...
-
EXCELで、セル内の半角カ...
-
エクセル関数で文字列の中のス...
-
半角の漢字の入力方法
-
ビジネスの文書における、数字...
-
エクセルで、JIS関数、ASC関数...
-
【VBA】ファイルパスに半角スペ...
-
Excel 文字列の中から数字だけ...
-
エクセルでひらがな・漢字はそ...
-
お名前(姓)」には「カタカナ(...
おすすめ情報