• ベストアンサー

入力した言葉を数値に変換し表示したいんです。

VisualBasic2005で作業を行っているモノです。 ネット上などでいろいろ調べてみたのですが、 検索方法が下手なのか調べきれなかったのでアドバイスをお願いいたします。 質問内容は... テキストボックス(ひらがな入力に限定しています)に入力した文字を数字(あらかじめ数字を割り当ててあります)に変換し、ラベルに表示する方法です。 数字の割り当て方は、以前に質問して理解できたのですが… 最初の文字しか反映されないので質問させていただきます。 例:Text1に「ここあ」と入力されたらLabel1に「551」と表示したいのですが、私の方法では「5」しか表示されません。 プログラムを貼り付けておきますので、何が足りないのか教えていただきたいと思います。 Private Sub Text1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtYou.TextChanged Select Case Text1.Text Case "あ", "か", "さ", "た", "な"        Label1.Text = 1 Case "い", "き", "し", "ち", "に"       Label1.Text = 2 Case "う", "く", "す", "つ", "ぬ       Label1.Text = 3 Case "え", "け", "せ", "て", "ね"       Label1.Text = 4 Case "お", "こ", "そ", "と", "の"       Label1.Text = 5 End Select End Sub 質問内容がわかりにくい上に乱文・駄文で申し訳ありませんが... わかる方がいましたらアドバイスをお願い致します。 宜しくお願い致します。

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

  • ベストアンサー
回答No.2

こんな感じで・・ Dim s As String = String.Empty For i As Integer = 0 To Text1.Text.Length - 1 Select Case Text1.Text.Substring(i, 1) Case "あ", "か", "さ", "た", "な" s &= 1 Case "い", "き", "し", "ち", "に" s &= 2 Case "う", "く", "す", "つ", "ぬ" s &= 3 Case "え", "け", "せ", "て", "ね" s &= 4 Case "お", "こ", "そ", "と", "の" s &= 5 End Select Next i Label1.Text = s End Sub

CRESCENT93
質問者

お礼

ありがとうございます。 ループについて私なりに調べてみたのですが、 うまくいかず苦戦していましたが... 上記の方法をプログラムに置き換えたら 正常に動きました。 これで前に進めます。 本当にありがとうございました。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

VB 繰り返し(ループ)について教えてください http://okwave.jp/qa4215109.html こちらの回答が参考になるのでは。

CRESCENT93
質問者

お礼

URLありがとうございました。 ループという言葉を知らなかったため、 似たような質問があることに気づきませんでした。 参考にさせて頂きます。

関連するQ&A

  • このコードはどこが間違っていますか?(至急)

    急ぎのため再度の質問失礼します。 (zのn乗)-(xのn乗+yのn乗)の計算をさせて、答えが0のときにメッセージを表示したいのですが、どのようなコードを書けばいいのでしょうか? Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click x = TextBox1.Text y = TextBox2.Text z = TextBox3.Text n = TextBox4.Text TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) If (TextBox5 .Text= 0) Then Label6.Visible = True End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label6.Click End Sub End Class このコードだと答えが必ず-1になってしまうのですが、どこを直せばいいのでしょうか? 正しいコードを教えて下さい。 よろしくお願いします。

  • VBでタイピングゲーム作成

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If TextBox1.Text = Label1.Text Then Label1.Text = "haradamunetoki" Label2.Text = "原田宗時" TextBox1.Text = "" Else Label3.Text = "違います" Private TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End If If TextBox1.Text = Label1.Text Then Label1.Text = "katakurakojuro" Label2.Text = "片倉小十郎" TextBox1.Text = "" Else Label3.Text = "違います" End If ――最初ラベル1にはdatemasamune、ラベル2には伊達政宗と表示してあって、主に判断の基準となるのはラベル1ですが、 最初のEnd If文までの間で繰り返しのような感じになってしまっていて 次の片倉小十郎に行くことができません。 先生に話しを聞いたところ、文法をよく理解していないとのこと…。 次のif文にいくにはどうしたらいいのでしょうか?

  • C言語への変換について

    VBで、下記のnCrを求めるプログラムを作りました。 これを、C言語にて、なるべく近い格好で移植したいと思いました。 いろいろなサイトを駆け回ってみましたが、なかなかよいものに巡り会えませんでした。 ですので、教えていただけませんでしょうか。 できれば、サンプルも。 Public Class Form1 Dim n, r, nr, kazu As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = "nCrの計算" Label1.Text = "n" Label2.Text = "C" Label3.Text = "r" Label4.Text = "=" Label5.Text = "" Button1.Text = "計算" Button2.Text = "リセット" Label6.Text = "nの値と、rの値を入力し、計算をクリックしてください。" & Chr(13) & "すると計算結果が表示されます。" Label7.Text = "" End Sub Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged n = NumericUpDown1.Value nr = n - r Label5.Text = "" Label7.Text = "" End Sub Private Sub NumericUpDown2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown2.ValueChanged r = NumericUpDown2.Value nr = n - r Label5.Text = "" Label7.Text = "" End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kazu = nkaijyou(n) / rkaijyou(r) Label5.Text = kazu nr = n - r Label7.Text = n & "C" & r & Space(1) & "=" & Space(1) & kazu End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click kazu = 0 Label5.Text = "" n = 0 r = 0 nr = 0 NumericUpDown1.Value = 1 NumericUpDown2.Value = 1 End Sub Function nkaijyou(ByVal n) If n <= nr Then Return 1 Return n * nkaijyou(n - 1) End Function Function rkaijyou(ByVal r) If r < 2 Then Return 1 Return r * rkaijyou(r - 1) End Function End Class

  • VBでの日付入力値のフォーマットに関して

    教えて下さい。 環境:Visual Basic 2008 画面上にテキスト入力エリアを設け、日付を入力させたいと考えています。 その際に、あらかじめ"/"(スラッシュ)が表示されていて、そこへ数字のみを 入力し、例えば・・・20110101と入力された場合、2011/11/01と変換されて表示される ような形にしたいと考えています。 そこで、以下のようなサンプルを入手し、実行していますが、どうもうまくFormatが できません。 何が原因でしょうか??? Private Sub FRM_発注入力_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TXT_発注日.MaxLength = 10 End Sub Function SetDateStyle(ByVal myStr As String) As String Dim Temp As String Temp = Replace(myStr, "/", "") If Len(Temp) = 8 Then SetDateStyle = Format$(Temp, "YY/MM/DD") If IsDate(SetDateStyle) = False Then Beep() SetDateStyle = "" End If Else SetDateStyle = myStr End If End Function Private Sub TXT_発注日_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TXT_発注日.TextChanged TXT_発注日.Text = SetDateStyle(TXT_発注日.Text) End Sub TXT_発注日というテキスト入力エリアに入力され、変更があった場合に処理をするような 形となっています。 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

  • KeyDownイベントで数字以外は発生しません。なぜでしょうか。

    KeyDownイベントで数字以外は発生しません。なぜでしょうか。 電卓を作っているのですが、キーボードからの対応をしているさなか大きな壁に当たりました。 フォームのKeyDownイベントでキーボードからの入力をキャッチする。 数字や演算、エンターキー。 フォームには、電卓を作るのに必要なボタンなどの配置はしてあります。 数字を表示する部分はLabel1にしています。 試験的に下記のソースで実験したところ、テンキーの数字以外、例えば演算キーをキーボードから入力すると、下記のソース通りならば、○算と表示されるはずです。しかし、なぜか数字と表示されます。 つまり、演算キーを押したにも関わらず、数字が入力されたとして処理されたということです。 なぜでしょうか。 そして、試験的にそれぞれが入力成功した時はLabelに表示されるようにしました。 Private Sub Form6_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown //↓エンターキーが押されたとき If e.KeyCode = Keys.Enter Then Label1.Text = "Enter" //↓演算キー及び点が入力されたとき ElseIf &H6A <= e.KeyCode <= &H6F Then Select Case e.KeyCode Case &H6A Label1.Text = "乗算" Case &H6B Label1.Text = "加算" Case &H6D Label1.Text = "減算" Case &H6E Label1.Text = "小数点" Case &H6F Label1.Text = "除算" End Select End If //↓delキーが押されたときの場合 If e.KeyCode = Keys.Delete Then Label1.Text = "Del" End If // ↓は数字1から9までが対象に入ります。 If &H60 <= e.KeyCode <= &H69 Then   Label1.Text = "数字" End If End Sub keycode表はマイクロソフトのキーコード定数を見て作りました。 僕がお伺いしたいのは、これらすべてを正常に対応させたいわけです。 数字、演算キー、その他のキーボード入力が正常にできるようにしたいのですが、どうもうまくできません。 なせかずべて数字ほうに行ってしまいます。これでは話にならないので、対処法はありませんか? 環境は Win7 Ultimate 64bit Visual Studio 2010 (VB) です。 何卒、よろしくお願い申し上げます。

  • LabelとTextboxの自動計算を希望

    ComboBox2のリスト選択で連動でlabel2とlabel12の数字変更 TextBox2には数字入力 Label12(数字) x TextBox2(数字) = Lavel22(乗算合計)で Label12変えないで、TextBox2の数字変えた時はLabel22の合計変動 Label12の数字変えて、TextBox2の数字変ない時はLabel22の合計変わらない現状です。 Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case True 'TextBox2かLabel12が空白の時Label22空白 Case TextBox2.Value = "" Or Label12.Caption = "" Label22.Caption = "" Case Else 'TextBox2とLabel12が数字の時Label22はTextBox2の数字とLabel12数字を乗算する If IsNumeric(TextBox2.Value) And IsNumeric(Label12.Caption) Then _ Label22.Caption = TextBox2 * Label12 'Label22に数字がある時Label29に合計表示 Label29.Caption = Label22 End Select End Sub ComboBox2_change()作って、TextBox2_KeyUp書いてる内容を書けば動くでしょうが・・・ 同じ内容2つ書かないで動く方法があれば非常に助かります。 いい方法無さそうならComboBox2_change()作って書こうかな・・・と思ってます

  • VB、教えてください。

    VB、教えてください。 5つのラベルが縦に並んでいます。 label0 label1 label2 label3 label4 あらかじめ、 Dim m as integer=0 を宣言し、 どうにかして "label"という文字列とmという数字をくっつけ、 label0 label1… という風にできないでしょうか。 そして label"m".text=10*m というような表示を作りたいのですが。 下記のようなイメージです。分かりにくかったらごめんなさい。 Public Class Form1 Dim m As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click lblmessage(+("m").Text = 10*m m = m + 1 End Sub End Class

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • vbのsavefiledialogについて

    vbで、テキストボックスに、文字を入力し、ボタン2をクリックすると、ユーザーが指定したところに、指定した名前で、txt形式、html形式、doc形式(このうち、txtと、htmlは必須。)で保存するプログラムを作りたいと思っております。 サイトを見てみますが、なかなかよいものが見つかりません。どなたか教えてください。 書きかけのプログラムと、フォーム図を載せておきます。 また、変更した方がよければ、そちらもおしえてください。 Public Class Form1 Dim texta As String Dim a Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Button1.Text = "リセット" Button2.Text = "保存" texta = TextBox1.Text End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged texta = TextBox1.Text End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click a = DialogResult SaveFileDialog1.OverwritePrompt = True SaveFileDialog1.FileName = "" SaveFileDialog1.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*" a = SaveFileDialog1.ShowDialog If a = Windows.Forms.DialogResult.OK Then Label1.Text = IO.Path.GetDirectoryName(SaveFileDialog1.FileName) Label2.Text = IO.Path.GetFileName(SaveFileDialog1.FileName) Else Label1.Text = "キャンセルされました。" Label2.Text = "" End If End Sub End Class

  • Elseifのコードが分かりません。(至急)

    急ぎのため再度の質問失礼します。 3つの数字すべてが7のとき、メッセージ1を出し、 どれか2つだけが7のときは、メッセージ2を出し、 どれか1つだけが7のときは、メッセージ3を出し、 どこにも7が含まれていないときは、メッセージ4を出すようにEndifを使って書きたいのですが、正しいコードを教えて下さい。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PictureBox1.Visible = False Label4.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) If End If End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click End Sub Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click End Sub End Class よろしくお願いします。