• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBAのLineInput取得値の置換等)

ExcelVBAのLineInput取得値の置換等

このQ&Aのポイント
  • ExcelのVBAでLine Inputで取得した内容について、いくつかの処理を行いたいのですが記述が分かりません。
  • 質問内容は、ExcelのVBAでLine Inputを使用して取得した値に対して、指定の処理を行いたいが、具体的な記述方法が分からないというものです。
  • 質問者は、ExcelのVBAでLine Inputで取得した値を処理し、特定の条件に基づいて書き換えたいと思っています。しかし、具体的な処理の記述方法について知識がありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

思いつくまま作って見ました。 住所録等で使用するのでしたら市町村名など、色々と考慮すべき事があるはずですがそれらはまったく考えていませんので注意して使ってください。 【A1】 buf = " abcde " sAns1 = LTrim(RTrim(buf)) '「abcde」 【A2】正規表現を使用 Dim oRegExp As Object Set oRegExp = CreateObject("VBScript.RegExp") buf = "a b c de " With oRegExp   .Global = True   .Pattern = "\s+"   sAns2 = .Replace(buf, " ") '「a b c de」 End With 【A3】半角だけってのが難しい。半角・全角全て小文字化なら buf = "aBCde " sAns3 = StrConv(buf, vbLowerCase) '「abcde」 '【A4】ループを回して置換 buf = "123 " sAns4 = buf For i = 0 To 9 sAns4 = Replace(sAns4, Chr(Asc("0") + i), Format(i, "0")) Next i '「123」 '【A5】全角のみかをチェックしてから置換。でも、「市川市」とかどうするの? buf = "あああ県いいい市うう町" sChk = StrConv(buf, vbFromUnicode) If Len(buf) * 2 = LenB(sChk) Then   sAns5 = Replace(buf, "県", "県 ")   sAns5 = Replace(sAns5, "市", "市 ") End If '「あああ県 いいい市 うう町」 '【A6】例では全角ハイフンが半角と見分けづらいのでダッシュを使用 buf = "2-5-201号室等" sAns6 = buf For i = 0 To 9   sAns6 = Replace(sAns6, i & "-", i & "―") Next i '「2―5―201号室等」 '【A7】 buf = "〒123-4567" sAns7 = Replace(buf, "郵便番号","") sAns7 = Replace(sAns7, "〒","") '「123-4567」 '【A8】正規表現を使用 Dim oRegExp As Object Set oRegExp = CreateObject("VBScript.RegExp") buf = "a福岡県aaa東京都港区沖縄県那覇市" With oRegExp   .Pattern = "[^東京都|沖縄県|大阪府|北海道|福岡県]"   sAns8 = .Replace(buf, "") '「福岡県東京都沖縄県"」 End With '【A9】正規表現を使用。(中略)の所には都道府県名をずらずらと登録のこと Dim oRegExp As Object Set oRegExp = CreateObject("VBScript.RegExp") buf = "a青森県" With oRegExp   .Pattern = "^[北海道|青森県|(中略)|沖縄県]"   sAns9 = buf   If .Match(buf) = False Then     sAns9 = "都道府県名エラー" & sAns9   End If '「都道府県名エラーa青森県」 End With

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

変換ロジックとチェックロジックとあるので分ける。チェックなんてのは答は出るでしょう。 いかに効率よく変換、整形するか。 今ある機能要件をプログラムレベルのロジックに砕いて下さい。 それができてからコードを書く。 コードを書いて要件が合わないから書き直し、は時間の無駄になりかねない。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

うーん、質問内容としては、初歩的な内容も含まれていますから、そのレベルだと、おそらく、元のコード自体も修正したりできないのではないかと思います。できるだけ、自分で調べて解決できる部分は、してほしいものです。 1. Trim 関数とReplace関数で出来るような気がします。  a = " 123 "  a = Replace(a, Space(1), Space(1), , , 1) 'TextCompare モードで、半角スペースに置換  a = Replace(a, vbTab, Space(1), , , 1)  b = Trim(a) 2.  a = "12 345" 'すでに半角空白にしてあることが前提  Do   i = Len(a)   a = Replace(a, Space(2), Space(1))   j = Len(a)  Loop While i > j 3.初級レベル  a = "ABcDeF"  b = StrConv(a, vbLowerCase) '小文字, 大文字は、vbUpperCase 4.3に準じます。初級レベルにつき割愛 全角数字があれば、半角数字に置換する  vbNarrow 5.  a = "宮崎県宮崎市日出町"  If Not a Like "*[!一-龠]*" Then   a = Replace(a, "県", "県 ") '後ろに全角空白   a = Replace(a, "市", "市 ")  End If   b = a 6.初級レベル  a= Replace(a,"-","-") 'デフォルト・BinaryCompareモード 7.初級レベル  a = Replace(a,"郵便番号", "")  a = Replace(a,"〒", "") 8.  "東京都""沖縄県""大阪府""北海道""福岡県"以外の文字があった場合該当する文字以外を削除   質問の意味がよく理解できません。   例えば、「都内千代田区」「府内船場」   というようなことでしょうか。ただ、9番と論理矛盾、もしくは、兼ねているように思います。都内・府内という特定の単語を削除するというのは可能でも、不特定の単語を削除は文字の切れ目がありませんから、掲示板上で簡易に公開する方法はないと思います。   9.  Const PREFECT_LIST = "北海道,青森県,岩手県,秋田県,宮城県,山形県,福島県,新潟県,富山県,石川県,福井県, 長野県,茨城県, 栃木県, 群馬県, 埼玉県,千葉県, 神奈川県, 山梨県, 東京都,岐阜県,静岡県,愛知県,三重県," & _  "滋賀県,京都府,兵庫県,奈良県,和歌山県,大阪府,鳥取県,島根県,岡山県,広島県,山口県,徳島県,香川県,愛媛県,高知県, 福岡県, 佐賀県, 長崎県, 熊本県, 大分県, 宮崎県, 鹿児島県,沖縄県"  Prefects = Split(PREFECT_LIST, ",")  '  a = "千代田区丸の内"  For Each c In Prefects   If Not a Like c & "*" Then    flg = True    Exit For   End If  Next c  If flg Then   b = "都道府県名エラー!" & a  End If

すると、全ての回答が全文表示されます。
  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

バイト数をLENで求め、FOR文で繰り返しで間のスペースはとれる。関数化とか。 UCASEとか大文字小文字扱う関数はみておく。 数字置き換えは10文字、10ケースしかない。 TABや全角スペースを一旦半角スペースにして半角スペースがいくつか並んだところを1つにするのがよさそう。 処理順番は工夫です。

すると、全ての回答が全文表示されます。

関連するQ&A