Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
全角と半角が混在しているのを全角に統一したいです。
投稿日時: 19/12/07 14:34:55
投稿者: yurappy

住所やアパート名などに含まれている、半角の英数字とカタカナを全角で統一したくて困っております。
   
データは次のようになっております。
   
   
A列          B列        C列
市町村名       住所       建物名
   
東京都渋谷区     代々木1-1-1
東京都渋谷区     代々木1-1-2   アパート名123
東京都渋谷区     代々木1-1-3
東京都渋谷区     代々木1-1-4  アパート名456
東京都渋谷区     代々木1-1-5
東京都新宿区     西新宿1-1-1
東京都新宿区     西新宿1-1-2
東京都新宿区     西新宿1-1ビル名
東京都新宿区     西新宿1-2ビル名 アパート名AB-12
   
このデータの半角英数字の値を全角に変えて次のようにしたいのです。
   
A列          B列        C列
市町村名       住所       建物名
   
東京都渋谷区     代々木1−1−1
東京都渋谷区     代々木1−1−2   アパート名123
東京都渋谷区     代々木1−1−3
東京都渋谷区     代々木1−1−4  アパート名456
東京都渋谷区     代々木1−1−5
東京都新宿区     西新宿1−1−1
東京都新宿区     西新宿1−1−2
東京都新宿区     西新宿1−1ビル名
東京都新宿区     西新宿1−2ビル名 アパート名ABー12
   
   
さらに、行数もデータ毎(シート毎)に異なるので、どのようにしたら良いのかわからず
困っております。
   
 ※ D列以降はお客様情報などが入っております。
   
エクセルの関数ですと =JIS(文字列) のような形でできたのですが、VBAではどのようにするにか
わからず、マクロの記録を試してもわからずにうまくできなくて、ネットで調べてみたら StrConv 等で
行うような事が書いてあったのですが、使い方がわからず幾つかサンプルファイルなどを試しても変換できずに悩んでおります。
   
良い方法がありましたら教えてください。
  

回答
投稿日時: 19/12/07 15:12:13
投稿者: よろずや

Range("B2").Value = StrConv(Range("B2").Value, vbWide)
 
ってな感じに。

投稿日時: 19/12/07 15:36:11
投稿者: yurappy

よろずや様
 
ご親切にありがとうございます。
 

引用:
Range("B2").Value = StrConv(Range("B2").Value, vbWide)

 
 
1つのセルだとできたのですが、複数の行でのやり方がわからず、また行数がシート毎に
違うのでどのようにしたら良いのか、悩んで困っております。
 
始めて、エクセルのVBAを書いているので、初歩的な質問ですみません。
 
ご面倒をお願いして申し訳ございませんが、良い方法をどなたか教えてください。
 
よろしくお願い申し上げます。

回答
投稿日時: 19/12/07 16:25:02
投稿者: WinArrow
投稿者のウェブサイトに移動

特定のセルを指定しるマクロではなく、
特定シート&特定セル範囲を指定するようなマクロを作成する場合、
マクロの実行タイミング・・・つまり、どのような方法で実行させるか
ということを念頭に置く必要があります。
 
それによって、マクロの記述方法が変わってくる場合があります。
 
あなたは、どのような方法でマウロを実行させたいのでしょうか?
また、誰かに、操作させるためのマクロなんですか?
 

回答
投稿日時: 19/12/07 16:34:03
投稿者: よろずや

各シートの構成は同じという前提です。
 
 

Option Explicit
Sub test2()
    Const TopRow = 3
    Dim Sh As Worksheet
    For Each Sh In ActiveWorkbook.Worksheets
        Dim EndRow As Long
        EndRow = Sh.Cells(Rows.Count, "A").End(xlUp).Row
        Dim Row As Long, Col As Long
        For Row = TopRow To EndRow
            For Col = 2 To 3
                Sh.Cells(Row, Col).Value = StrConv(Sh.Cells(Row, Col).Value, vbWide)
            Next Col
        Next Row
    Next Sh
End Sub

投稿日時: 19/12/07 17:00:16
投稿者: yurappy

お世話になります。
 
よろずや様、ご親切にありがとうございます。
 

引用:

各シートの構成は同じという前提です。

 
シートの構成(列の並び順)はすべて同じで、教えていただいたコードで無事に思うように動作を
いたしまして、きれいに全角文字に変換できました。
 
ご丁寧にありがとうございます。
たいへんに助かりました。
 
 
 
 
WinArrow様、ありがとうございます。
 
引用:

マクロの実行タイミング・・・つまり、どのような方法で実行させるか
あなたは、どのような方法でマウロを実行させたいのでしょうか?
また、誰かに、操作させるためのマクロなんですか?

 
マクロの実行タイミングは、異なるファイルからデータをコピーしてきて、シートにペーストして、
その後、ボタンを設けてそこから起動するようにする予定です。
操作は、複数の者が行います。
 
 
 
 
皆様、ありがとうございました。
 
VBA初心者で、またどのようにしたら良いのかわからず、お世話になるかと思いますが
その際はお願いいたします。
 
ありがとうございました。