[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『英数字だけを半角に変換したい』(関数がにがて)
こんにちは
仕事で色々な人が入力したデータをまとめて、一覧にしているのですが、
書式が人によりまちまちなので、私が英数字だけを半角に空欄は全角に統一しています。
VBAの勉強がてらマクロで一気に変換したいと思い、ネットで探したところfunctionプロシージャで書かれたものは見つけました。
今後のために、これをマクロに書き換えるにはどうしたらよいのかを教えてください。
一応、subとfunctionの意味の違いは理解しています。
でも、それをどのように活用したらよいのかが分かりません。
Function AscEx2(strOrg As String) As String
Dim strRet As String Dim intLoop As Integer Dim strChar As String
strRet = ""
For intLoop = 1 To Len(strOrg)
strChar = Mid(strOrg, intLoop, 1)
If (strChar >= "0" And strChar <= "9") _ Or (strChar >= "A" And strChar <= "Z") _ Or (strChar >= "a" And strChar <= "z") Then strRet = strRet & StrConv(strChar, vbNarrow) Else strRet = strRet & strChar End If
Next intLoop
AscEx2 = strRet
End Function
どうぞ、よろしくお願いいたします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
なら、まず 一度functionプロシージャ のまま使用してみては
その上で不都合点をあげて解決を探るのがよろしいかと
>一応、subとfunctionの意味の違いは理解しています。
に疑問が有ります。
ああ 意味の違いが判るのであって、使用方法等は判らないと言うことかな?
(?) 2016/09/23(金) 14:13
よろしくお願いします。
(関数がにがて) 2016/09/23(金) 14:33
現在のFunctionを呼び出すプロシジャを書く、という手もありますが、とりあえず、A列に変換対象文字列があるとして、B列に変換後の文字列を出力する別な例なぞ。
Sub test() Dim cw1 As String Dim cw2 As String Dim cw As String Dim i As Long Dim j As Long
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row cw1 = StrConv(Cells(i, "A").Value, vbWide) cw2 = "" For j = 1 To Len(cw1) cw = Mid(cw1, j, 1) If cw Like "[0-9A-Za-z]" Then cw = StrConv(cw, vbNarrow) End If cw2 = cw2 & cw Next j Cells(i, "B").Value = cw2 Next i End Sub (???) 2016/09/23(金) 14:50
変換したいセルはまとめるbookごとに違うので、セルを選択してその列を行いたいです。
???さんの例を参考に試行してみます。
(関数がにがて) 2016/09/23(金) 15:18
???さんのを参考に自分用に試行してみました。
これで私がしたいことが出来ました。
Sub test()
Dim cw1 As String Dim cw2 As String Dim cw As String Dim j As Long
Do Until ActiveCell.Value = "" cw1 = StrConv(ActiveCell.Value, vbWide) cw2 = "" For j = 1 To Len(cw1) cw = Mid(cw1, j, 1) If cw Like "[0-9A-Za-z]" Then cw = StrConv(cw, vbNarrow) End If cw2 = cw2 & cw Next j ActiveCell.Value = cw2 ActiveCell.Offset(1, 0).Select Loop
End Sub
VBAの勉強も頑張ります。
ありがとうございました。
(関数がにがて) 2016/09/30(金) 10:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.