- ベストアンサー
(株)を(株)に変換するマクロ
ユーザーフォームのテキストボックスに「(株)OK商事」と入力すると、エクセルシートには「カOK商事」と表示したいと思っています。(株)の3文字を「カ」の1文字に置き換えることができません。Mid関数を使って、Mid(文字列, i, 3)で(株)を拾った時にflag=trueにして、変換後文字 = Mid(文字列, 1, i - 1) & "(株)" & Mid(文字列, i + 3, i)としてみたのですが、表示は(株カのようになってしまいます。何かいい方法はないでしょうか?便利な関数が他にあるのでしょうか。超初心者なので、できるだけ詳しく教えて頂けますか?よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
色々な方法が考えられますが、『Application.Substitute』はどうでしょうか・・・ 『(株)』と『カ』は全角か半角かよく分からないので、ご自分で決めてください。 Function KabuOkikae(moji As String) KabuOkikae = Application.Substitute(moji, "(株)", "カ") End Function
その他の回答 (2)
- wildcard
- ベストアンサー率54% (54/100)
途中まで具体的なコードを示していただければ、確実なのですが… たぶん 変換後文字=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
お礼
ありがとうございます。試してみたのですが、文字が表示されません。(*引数に文字列を入れて、Range("A1").Value=株変換(文字列)というコードがあるという想定です。) エラー表示もなく、何が悪いのか、???です。でも、wildcardさんのおかげでMid関数を覚えることができました。これからもよろしくお願い致します。
- dokodon
- ベストアンサー率36% (11/30)
セルならこの式でできました 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としないとダメだったかもしれません 参考にしてください
お礼
必ず頭に(株)ではなくて、余計に頭がこんがらがっています。この場合だと、必ず前株なんですよね・・・もっと勉強します。ありがとうございました。
お礼
ありがとうございました!おかげでカンタンに出来てしまって、感激です。エクセル関数は使えないと思ってたので、勉強になりました。ずっと KabuOkikae = Substitute(moji, "(株)", "カ") 書いてて、エラーになり、駄目なんだと思って、別のやり方を模索してました。Applicationを使えばいいんですね。これからも色々幅が広がりそうです。これからもよろしくお願いします。