プロが教える店舗&オフィスのセキュリティ対策術

VBの超初心者です。

数字から漢数字への変換に挑戦しているのですが、
苦戦しています…

テキストボックスに5桁までの数字を入力して、コマンドボタンを
クリックしたら、ラベルボックスに5桁の漢数字が出力されるという
プログラムです。

ex「65432」→「六万五千四百三十二」

このような感じにしたいのですが、どなたか教えて下さい。
宜しくお願いします。
使用しているの、VB6.0です。

A 回答 (4件)

>数字から漢数字への変換に挑戦しているのですが、



方法はいろいろあると思います。
ご自分で、できたところまでを提示しましょう。

この回答への補足

すみません!
cmdhenkanが”変換”コマンドボタン(65432→六五四三二へ)で、
cmdketaが”変換2”コマンドボタン(65432→六万五千四百三十二へ)です。

Option Explicit
Private Sub cmdhenkan_Click()
Dim Suzi: Dim Kansuzi As String

Suzi = txtsuzi
Kansuzi = lblkansuzi

Select Case txtsuzi.Text

Case "0"
lblkansuzi.Caption = "〇"
Case "1"
lblkansuzi.Caption = "一"
Case "2"
lblkansuzi.Caption = "二"
Case "3"
lblkansuzi.Caption = "三"
Case "4"
lblkansuzi.Caption = "四"
Case "5"
lblkansuzi.Caption = "五"
Case "6"
lblkansuzi.Caption = "六"
Case "7"
lblkansuzi.Caption = "七"
Case "8"
lblkansuzi.Caption = "八"
Case "9"
lblkansuzi.Caption = "九"

End Select

End Sub

Private Sub cmdketa_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer

lblkansuzi = a
lblkansuzi = b
lblkansuzi = c
lblkansuzi = d
lblkansuzi = e


a = len(&"万") * 10000
b = len(&"千") * 1000
c = len(&"百") * 100
d = len(&"十") * 10
e = len()*1




End Sub

Private Sub lblkansuzi_Click()
Dim txtsuzi: Dim lblkansuzi As String
Dim i As Long
txtsuzi = "00000"
iLen = Len(textsuzi)
For i = 1 To iLen
lblkansuzi.Print Mid(txtsuzi, i, 1)
Next i
End Sub
見づらくて申し訳ありません。

補足日時:2009/03/05 22:21
    • good
    • 0

こんにちは


誰でも最初は初心者です
が、これでデバッグできていますか?

簡単なほうだけ
Private Sub cmdhenkan_Click()
Dim Suzi: Dim Kansuzi As String
Dim i As Integer: Dim iLen As Integer

iLen = Len(txtsuzi.Text)

''Suzi = txtsuzi
''Kansuzi = lblkansuzi
Suzi = txtsuzi.Text
Kansuzi = ""

For i = 1 To iLen
''Select Case txtsuzi.Text
Select Case Mid(Suzi, i, 1)
Case "0"
''lblkansuzi.Caption = "〇"
Kansuzi = Kansuzi & "〇"
Case "1"
''lblkansuzi.Caption = "一"
Kansuzi = Kansuzi & "一"
Case "2"
''lblkansuzi.Caption = "二"
Kansuzi = Kansuzi & "二"
Case "3"
''lblkansuzi.Caption = "三"
Kansuzi = Kansuzi & "三"
Case "4"
''lblkansuzi.Caption = "四"
Kansuzi = Kansuzi & "四"
Case "5"
''lblkansuzi.Caption = "五"
Kansuzi = Kansuzi & "五"
Case "6"
''lblkansuzi.Caption = "六"
Kansuzi = Kansuzi & "六"
Case "7"
''lblkansuzi.Caption = "七"
Kansuzi = Kansuzi & "七"
Case "8"
''lblkansuzi.Caption = "八"
Kansuzi = Kansuzi & "八"
Case "9"
''lblkansuzi.Caption = "九"
Kansuzi = Kansuzi & "九"
End Select
Next i

lblkansuzi.Caption = Kansuzi
End Sub

万,千,百,十は
これから色々疑問が出てくると思うので省略させていただきます

それからコントロールと同じ名称で変数を宣言するのは
よろしくありません
    • good
    • 0

一例です。



Private Sub cmdketa_Click()
Dim Suzi: Dim Kansuzi As String
Dim i As Integer: Dim iLen As Integer
Dim Keta As String: Dim Ans As String
Kansuzi = "〇一二三四五六七八九"
Keta = "一十百千万"
iLen = Len(txtsuzi.Text)
Suzi = CLng(txtsuzi.Text)
For i = 1 To iLen
  Select Case Suzi Mod 10
    Case 1
      Ans = Mid(Keta, i, 1) & Ans
      If i = 5 Then Ans = "一" & Ans '1万の時だけ一を付ける
    Case 2 To 9
      Ans = Mid(Kansuzi, Suzi Mod 10 + 1, 1) & Ans
  End Select
  Suzi = Suzi \ 10
  If Suzi Mod 10 > 1 Then Ans = Mid(Keta, i + 1, 1) & Ans
Next i
lblkansuzi.Caption = Ans
End Sub
    • good
    • 0
この回答へのお礼

ご丁寧に教えていただき有難う御座いました!

まだ参考書などの例題を見様見真似で作っているにすぎないので
一つ一つ調べながら、どういう流れで結果が出ているのか勉強して
いきたいと思います。

お礼日時:2009/03/06 22:35

ANo1です。


あまり時間がとれないので、すみませんが考え方のみ・・・
(せっかくコードを提示していただいたのに、ごめんなさい)

基本的には数値を各桁に分解して、あとは文字列処理ということになりますが、ご提示のコードの各行が質問者様の思っている通りに実行されているかをテストしてみたほうがよさそうです。(かなり問題あり)

大雑把な考え方として・・・
1)数字を4桁ごとにひとくくりとして分解する
2)それぞれについて各桁に単位をつけて○千○百○十○みたいに変換
3)4桁ごとに単位(万、億、兆・・・)を付ける

注)・数値の値が0の桁には単位(千百十)は付けない
  ・4桁区切りでの値が0なら単位(万、億、兆・・・)も付けない

・・で、大体のところまではできますが、実は、1101は一千百一なのか千百一なのか、あるいは、11001は一万一千一なのか、一万千一なのかのように数値が1の場合の表示をどの様にするのかのルール作りを、最初にきちんと整理しておかないと、後で変なところがでてくる可能性があります。

ルール決めについては、使用言語が違うけど↓あたりが参考になるかと。(後半の部分)
 http://oshiete1.goo.ne.jp/qa4391551.html
(言語が違っても計算式は似たようなものなので、多少はロジックの参考にもなるかも知れません。 ただし、縮めているので読みにくいけど。)
    • good
    • 0
この回答へのお礼

どうも有難う御座います!

勉強し始めたばかりなので、教えていただいたコードを
一つ一つ理解して早く慣れるようにしたいと思います。

お礼日時:2009/03/06 22:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!