• ベストアンサー

(株)を(株)に変換するマクロ

ユーザーフォームのテキストボックスに「(株)OK商事」と入力すると、エクセルシートには「カOK商事」と表示したいと思っています。(株)の3文字を「カ」の1文字に置き換えることができません。Mid関数を使って、Mid(文字列, i, 3)で(株)を拾った時にflag=trueにして、変換後文字 = Mid(文字列, 1, i - 1) & "(株)" & Mid(文字列, i + 3, i)としてみたのですが、表示は(株カのようになってしまいます。何かいい方法はないでしょうか?便利な関数が他にあるのでしょうか。超初心者なので、できるだけ詳しく教えて頂けますか?よろしくお願い致します。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

色々な方法が考えられますが、『Application.Substitute』はどうでしょうか・・・ 『(株)』と『カ』は全角か半角かよく分からないので、ご自分で決めてください。 Function KabuOkikae(moji As String)   KabuOkikae = Application.Substitute(moji, "(株)", "カ") End Function

kohiro
質問者

お礼

ありがとうございました!おかげでカンタンに出来てしまって、感激です。エクセル関数は使えないと思ってたので、勉強になりました。ずっと KabuOkikae = Substitute(moji, "(株)", "カ") 書いてて、エラーになり、駄目なんだと思って、別のやり方を模索してました。Applicationを使えばいいんですね。これからも色々幅が広がりそうです。これからもよろしくお願いします。

その他の回答 (2)

  • wildcard
  • ベストアンサー率54% (54/100)
回答No.2

途中まで具体的なコードを示していただければ、確実なのですが… たぶん 変換後文字=Left(文字列, i - 1) & "カ" & Mid(文字列, i + 3, Len(文字列)) でokでしょうか? ちなみにこれは、下記のようなコードを想定しております。   Dim 文字列,変換後文字 As String   Dim i As Long   '文字列=テキストボックスの値   For i = 1 To Len(文字列)     If Mid(文字列, i, 3) = "(株)" Then       変換後文字 = Left(文字列, i - 1) & "カ" & Mid(文字列, i + 3, Len(文字列))     End If   Next i

kohiro
質問者

お礼

ありがとうございます。試してみたのですが、文字が表示されません。(*引数に文字列を入れて、Range("A1").Value=株変換(文字列)というコードがあるという想定です。) エラー表示もなく、何が悪いのか、???です。でも、wildcardさんのおかげでMid関数を覚えることができました。これからもよろしくお願い致します。

  • dokodon
  • ベストアンサー率36% (11/30)
回答No.1

セルならこの式でできました B3に(株)OK商事 (株)でも(株)でも両方対応するようにor文で対応させました ちなみに必ず文頭に(株)が来ると仮定できるのならLEFT文が良いと思います Mid文ならMid(文字列,1,3)です iを代入している部分が間違っているようです =IF(OR(LEFT(B3,3)="(株)",LEFT(B3,3)="(株)"),"カ"&MID(B3,4,LEN(B3)),B3) もしかしたらマクロ分ではLenはそのままでは使えなくてApplication.lenとしないとダメだったかもしれません 参考にしてください

kohiro
質問者

お礼

必ず頭に(株)ではなくて、余計に頭がこんがらがっています。この場合だと、必ず前株なんですよね・・・もっと勉強します。ありがとうございました。

関連するQ&A