どうも、三流プログラマーのKen3です。 今回は、 プログラムの修正・追加のいろいろな方法? として、 縦に羅列と配列でループ を比べて少し書いてみます。 自分でも読み返すとあまり参考にならないのですが、 せっかく書いたので発行しちゃいます。 読者の声:あっ、そのネタ知ってるよ。内容は・・・だろ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ またまたぁ・・・先に心の中でネタ先読みしないでよ。 私が最近、金曜日の夜に見ているドラマ タイガー アンド ドラゴンの客じゃないんだからさ -- 余談 -- 落語を元ネタにして、よくできたドラマだと思う。 話の作り方とかテンポの切り替え方、落語のネタと現在の話の混ぜ方が絶妙かなぁ。 脚本家がすごいんだろうなぁ。 私のメルマガでもテンポの切り替え方とか取り入れたいけど・・・ と言いつつ、チョイ役の売れない洋服屋の女性店員がタイプで見てたり(笑)/* * 1. 今回のキッカケ */
前回のメルマガ No.173 プログラムの修正・追加のいろいろな方法? http://www.ken3.org/vba/backno/vba173.html で、 下記の全角英数字を半角にする下記のサブルーチンを作成した。
Function 全角ABCto半角ABC(strMOTO As String) As String
Dim strRET As String
Dim strCHK As String
Dim n As Integer
Dim lngCODE As Long
strRET = "" 'リターン値の初期化
'文字数分コードを調べて変換して、strRETに+する
For n = 1 To Len(strMOTO)
strCHK = Mid(strMOTO, n, 1) 'n番目の文字を取り出す
Select Case Asc(strCHK)
Case Asc("0") To Asc("9") '全角0〜9
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("a") To Asc("z") '全角a〜z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("A") To Asc("Z") '全角A〜Z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("(") '( カッコ
strRET = strRET & "(" '半角の(を+する
Case Asc(")") ') カッコ
strRET = strRET & ")" '半角の)を+する
Case Asc("/") '/ スラッシュ
strRET = strRET & "/" '半角の/を+する
Case Asc(".") '.ドット
strRET = strRET & "." '半角の.を+する
Case Else 'その他
strRET = strRET & strCHK '上記以外はそのまま+する
End Select
Next n
'変換結果を返す
全角ABCto半角ABC = strRET 'リターン値の代入(変換結果の代入)
End Function |
Sub test()
Dim strWORK As String
Debug.Print "テスト結果:" & Now
'2005-05-18 テスト
strWORK = "Excel VBA(ブイビーエー) 2000/2002対応"
Debug.Print 全角ABCto半角ABC(strWORK)
strWORK = ".NETエンタープライズWebアプリケーション開発技術大全"
Debug.Print 全角ABCto半角ABC(strWORK)
'2005-05-25 テスト
strWORK = "Visual C#.NETプログラミング入門"
Debug.Print 全角ABCto半角ABC(strWORK)
strWORK = "Microsoft Visual C++ .NETランゲージリファレンス"
Debug.Print 全角ABCto半角ABC(strWORK)
End Sub |
Function 全角ABCto半角ABC(strMOTO As String) As String
Dim strRET As String
Dim strCHK As String
Dim n As Integer
Dim lngCODE As Long
strRET = "" 'リターン値の初期化
'文字数分コードを調べて変換して、strRETに+する
For n = 1 To Len(strMOTO)
strCHK = Mid(strMOTO, n, 1) 'n番目の文字を取り出す
Select Case Asc(strCHK)
Case Asc("0") To Asc("9") '全角0〜9
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("a") To Asc("z") '全角a〜z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("A") To Asc("Z") '全角A〜Z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("(") '( カッコ
strRET = strRET & "(" '半角の(を+する
Case Asc(")") ') カッコ
strRET = strRET & ")" '半角の)を+する
Case Asc("/") '/ スラッシュ
strRET = strRET & "/" '半角の/を+する
Case Asc(".") '.ドット
strRET = strRET & "." '半角の.を+する
'2005-05-25 条件追加
Case Asc("#") '#シャープ
strRET = strRET & "#" '半角の#を+する
Case Asc("+") '+プラス
strRET = strRET & "+"
Case Asc(" ") '□(全角スペース)
strRET = strRET & " " '半角のスペースを+する
Case Else 'その他
strRET = strRET & strCHK '上記以外はそのまま+する
End Select
Next n
'変換結果を返す
全角ABCto半角ABC = strRET 'リターン値の代入(変換結果の代入)
End Function |
Function 全角ABCto半角ABC(strMOTO As String) As String
Dim strRET As String
Dim strCHK As String
Dim n As Integer
Dim lngCODE As Long
'2005-05-25 追加
Dim str全角(8) As String
Dim str半角(8) As String
Dim nLOOPCNT As Integer 'ループのカウンタ
'配列に文字をセットする
str全角(0) = " ": str半角(0) = " " '□(全角スペース)
str全角(1) = "(": str半角(1) = "(" '( カッコ
str全角(2) = ")": str半角(2) = ")" ') カッコ
str全角(3) = "/": str半角(3) = "/" '/ スラッシュ
str全角(4) = ".": str半角(4) = "." '.ドット
str全角(5) = "#": str半角(5) = "#" '#シャープ
str全角(6) = "+": str半角(6) = "+" '+プラス
str全角(7) = "−": str半角(7) = "-" '−マイナス、ハイフン
strRET = "" 'リターン値の初期化
'文字数分コードを調べて変換して、strRETに+する
For n = 1 To Len(strMOTO)
strCHK = Mid(strMOTO, n, 1) 'n番目の文字を取り出す
Select Case Asc(strCHK)
Case Asc("0") To Asc("9") '全角0〜9
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("a") To Asc("z") '全角a〜z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("A") To Asc("Z") '全角A〜Z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Else 'その他
'配列の文字と一致するかチェックする 2005-05-25修正
For nLOOPCNT = 0 To 7
If strCHK = str全角(nLOOPCNT) Then 'チェックする全角文字と一致するか?
strCHK = str半角(nLOOPCNT) '対応する半角文字をセットする
Exit For 'ループを強制的に抜ける
End If
Next nLOOPCNT
strRET = strRET & strCHK 'strCHKを+する
End Select
Next n
'変換結果を返す
全角ABCto半角ABC = strRET 'リターン値の代入(変換結果の代入)
End Function |
Function 全角ABCto半角ABC(strMOTO As String) As String
Dim strRET As String
Dim strCHK As String
Dim n As Integer
Dim lngCODE As Long
'2005-05-25 追加
Dim str全角 As Variant '*1 変数をVariantで宣言
Dim str半角 As Variant
Dim nLOOPCNT As Integer 'ループのカウンタ
'Array関数で配列を初期化する
str全角 = Array(" ", "(", ")", "/", ".", "#", "+", "−")
str半角 = Array(" ", "(", ")", "/", ".", "#", "+", "-")
strRET = "" 'リターン値の初期化
'文字数分コードを調べて変換して、strRETに+する
For n = 1 To Len(strMOTO)
strCHK = Mid(strMOTO, n, 1) 'n番目の文字を取り出す
Select Case Asc(strCHK)
Case Asc("0") To Asc("9") '全角0〜9
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("a") To Asc("z") '全角a〜z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("A") To Asc("Z") '全角A〜Z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Else 'その他
'配列の文字と一致するかチェックする 2005-05-25修正
For nLOOPCNT = 0 To 7
If strCHK = str全角(nLOOPCNT) Then 'チェックする全角文字と一致するか?
strCHK = str半角(nLOOPCNT) '対応する半角文字をセットする
Exit For 'ループを強制的に抜ける
End If
Next nLOOPCNT
strRET = strRET & strCHK 'strCHKを+する
End Select
Next n
'変換結果を返す
全角ABCto半角ABC = strRET 'リターン値の代入(変換結果の代入)
End Function |
Function 全角ABCto半角ABC(strMOTO As String) As String
Dim strRET As String
Dim strCHK As String
Dim n As Integer
Dim lngCODE As Long
'2005-05-25 追加
Dim str全角 As String
Dim str半角 As String
Dim nSERCH As Integer '場所を覚える変数
'全角の文字列と半角の文字列を作成する
str全角 = " ()/.#+−*"
str半角 = " ()/.#+-*"
strRET = "" 'リターン値の初期化
'文字数分コードを調べて変換して、strRETに+する
For n = 1 To Len(strMOTO)
strCHK = Mid(strMOTO, n, 1) 'n番目の文字を取り出す
Select Case Asc(strCHK)
Case Asc("0") To Asc("9") '全角0〜9
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("a") To Asc("z") '全角a〜z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Asc("A") To Asc("Z") '全角A〜Z
strRET = strRET & StrConv(strCHK, vbNarrow) '変換して+
Case Else 'その他
'変換候補の変数 str全角の中に存在するか?チェックする 2005-05-25修正
nSERCH = InStr(str全角, strCHK) 'InStr関数でstr全角からstrCHKを探す
If nSERCH > 0 Then '見つかった、場所が0以上か?
strCHK = Mid(str半角, nSERCH, 1) '半角のn番目を代入する(に置き換える)
End If
strRET = strRET & strCHK 'strCHKを+する
End Select
Next n
'変換結果を返す
全角ABCto半角ABC = strRET 'リターン値の代入(変換結果の代入)
End Function |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]