• ベストアンサー

テキストボックスの文字を変換(特定の文字へ)

お世話になります。VBまったくの初心者です。 テキストボックスの文字をStrConvでカタカナやひらがなにする方法がありますが、 これを特定の文字に、例えば"あいう"ならば"あ"="あひる"、"い"="いのしし"、 "う"="うさぎ"と対応させて"あひるいのししうさぎ"などの文字列に変換することは 可能でしょうか? "あ"は"あひる"のように一文字ずつならできたのですが、"あいう"のようにつなげると 上手くいきません。 何か方法があるようでしたら、あるいは不可能でしたらその旨教えて下さい。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>"あ"は"あひる"のように一文字ずつならできたのですが の意味が良く捉えられません。 >、"あいう"のようにつなげると上手くいきません。 この意味も判りません。 ---- 原文は、「ひらがな」の連なりとしていいのですね。 そしてコマンドボタン等クリックされた後処理を始めて言いのですか。1文字入れるごとに即座に変換するのですか。 原文の1文字に複数文字が対応し、1意的に対応するのですね。「あ」はある時は「あひる」ある時は「あなぐま」 にするとかないでしょうね。 1意的対応であれば、対応テーブル(表)を持ち、テーブルを引けば良いだけで、問題にするほどの事もない。 エクセルで言えば、VLOOKUP関数を使うイメージです。恥ずかしく初等的にやると Sub test01() Dim a(10), b(10) a(1) = "あ": b(1) = "あひる" a(2) = "い": b(2) = "いのしし" a(3) = "う": b(3) = "うさぎ" text1 = "あいう" x = "" For i = 1 To Len(text1) For j = 1 To 3 If Mid(text1, i, 1) = a(j) Then x = x & b(j) End If Next j Next i MsgBox x End Sub Text1はText1.textを当てる。 上記をコマンドボタンのイベントプロセヂュアーに変える。 配列a,bの要素は増やす。

choco_monaka
質問者

お礼

ご回答ありがとうございました。 >この意味も判りません。 大変失礼致しました。テキストボックスtxt1に"あ"と入力してコマンドボタン1をクリック すると、テキストボックスtxt2に"あひる"が表示できましたが、txt1に"あいう"と続けて 入力すると、"あひるいのししうさぎ"と表示させたいのに"あひる"と表示されてしまうのです。 文字は必ず一意的に対応します。 お仕事のため締め切りが遅くなってしまうかもしれません。申し訳ありません。 取り急ぎお礼まで。

choco_monaka
質問者

補足

コードを引用させていただき、試してみましたら期待していたように 実行できました。ありがとうございました。 もっとお勉強します。お世話になりました。

その他の回答 (1)

  • -boya-
  • ベストアンサー率35% (176/494)
回答No.1

可能だと思いますが、全部の文字を変換する場合、特定の文字だけ を変換する場合、文字列の長さ、、、 それぞれ条件によって色々と方法があると思いますが、、、 ○Mid関数を使って文字列の左から一文字ずつ拾っていき、 他の文字列変数につなげていく。 →別の文字列変数ChStrを用意しておいて、Mid(TB,i,1)を For i=1 to len(TB)で回していき、Mid(省略)の値が 変換を必要とする文字列だった時は変換してChStr=ChStr&"変換後"、 それ以外はChStr=ChStr&Mid(省略)を行う。 (※TB=テキストボックス) とかですかね?他にもInStr関数を使ったり、Split関数で 特定の文字ごとに切り分けたり、、、 あくまで素人の参考意見です。

choco_monaka
質問者

お礼

ご回答ありがとうございました。 急にお仕事が立て込んでしまい、すぐに検証できないのですが、時間が出来次第、参考書を 片手に試してみたいと思っています。Mid思いつきませんでした。 締め切るのがちょっと遅くなってしまうかもしれませんがご容赦ください。まずはお礼まで。

関連するQ&A

  • StrConvでUnicodeに変換出来ない文字

    エクセルのVBAで、StrConv関数を使用して、文字列をUnicodeに変換しようとしているのですが、特定の文字が変換できません。 解決方法をご存知の方は教えてください。 現象:StrConv("マミムメモ",vbUnicode)で変換すると、ムメモが文字化けしてしまう。 確認方法: MsgBox StrConv(StrConv(InputBox("入力"), vbUnicode), vbFromUnicode) で、InputBoxに"マミムメモ"を入力すると、メッセージボックスに"マミ???"と表示されてしまう。

  • C#でテキストボックスに入力した文字列をビット列に変換

    C#で電子透かしのプログラムを作ってるのですが、テキストボックスに入力した文字列(日本語)をビット列に変換する方法はないでしょうか? VBだとchngBit()という関数がありますが、アルファベットしかダメみたいです。

  • テキストボックス内の文字のみ変換

    Word2003を使用していますが、取説内の全テキストボックス内の文字だけを選択して、半角、全角に変換することは出来ないでしょうか? [Ctrl] [A]で全体を選択してもテキストボックスは選択出来ないからです。 何かいい方法はないでしょうか?

  • テキストボックスについて

    使っている環境はVB6.0です。 テキストボックスが2つあり、1つ目のテキストボックスでEnterキーを押すとテキストボックスの2つ目にフォーカスが移動するというものなのですが、その移動したときに2つ目のテキストボックスの文字が選択されている状況を作りたいのですが何か良い方法はないでしょうか? 文字は最初から入っている前提でお願いします。

  • 文字変換の登録可能なテキストエディタ

    固定の文字変換の登録が可能なお勧めのテキストエディタはありますでしょうか? (フリーでものが無いならばシェアウェアでも) 例えば こんにちは→こんばんわ  の変換30箇所 ありがとう→ごめんなさい  の変換20箇所 みたいな感じの特定文字列を特定文字列への変換を毎日100種類ぐらいの変換を仕事で行っています。 現在はterapad を使って一括変換を順番にかけているのですが、 結構量が多く毎日20~30分ぐらい作業時間が取られるので特定文字列の変換をセット、保存、一括などでまとめてできたり記憶させておいて起動させるのみなどできるお勧めのテキストエディタはありますでしょうか? 特定文字列から特定文字列の変換は固定のものでたまに追加は出てきますが、基本的には毎日固定の変換です。 もしこういった作業に向いているお勧めのエディタを知っている方がいましたらご回答お願いします。

  • テキストボックスでのカーソルについて

    VB6で作ったフォームでテキストボックスにフォーカスが移ったときに既に入っている文字列の先頭にカーソルがいるのですが、これを文字列をすべて選択した様に(反転表示)にならないか、または文字列の最後尾にカーソルを置けないか、悩んでいます。よろしくお願いいたします。

  • テキストボックスのバグでしょうか?

    VB5(SP3)を使用しています。 例えばフォームにテキストボックスを2つ貼りつけて、プログラムを実行します。 IMEの入力設定を「ローマ字入力」の状態で始めたとします。 最初のテキストボックスでキーボードの【Alt】+【カタカナ・ひらがな/ローマ字】を押しても「かな入力」になりません。次のテキストボックスにカーソルを移動すると「かな入力」が有効になります。 ACCESSとかだとその場で有効になります。 これはVBのバグなのでしょうか? 使用PC:DOS/V 使用OS:WindowsNT4.0

  • WORD2019のテキストボックス

    WORD2019なのですが、テキストボックスに仲に文字列を構成して、テキストボックスの大きさを変えようとすると、下図のように、文字列が偏って、文字が欠けてしまいます。(>_<)文字列を上下左右とも、テキストボックスの中央に、配置する方法を教えてください。

  • 数値型のテキストボックスを文字型に変えたい

    環境:XP&ACCESS2003 数値型のコントロールソースを持つテキストボックスがあります。このテキストボックスに、例えば「8+7」と入力するために、文字型に変換したいのですが。 *このコントロールソースの更新後処理に Me!テキスト0 = Eval(テキスト0) と記述しています。 数値型なので、「数値型の為入力できません」旨のエラーが出てしまいます。

  • リッチテキストボックスについて

    こんにちは。Kakugariです。 コード内で、リッチテキストボックスの特定の文字(例えば、何文字目から、何文字目までなど)の色を変更することはできるでしょうか?SelColorプロパティを使ってみたのですが、あれはユーザーが選択した文字列の色を変えるものなので困っています。よろしくお願いします。