00と入力したいのですが、0となってしまう

タグの編集
投稿者 かんた  (社会人) 投稿日時 2009/8/11 05:22:44
最近、職業訓練にてvb触り始めた初心者です。

今、講義でvbを習っているんですが、
フォームに配置してありますボタン「00」をクリックすると、
同じフォームに配置してありますコンボボックスに「00」が入力されるロジックを
考えています。

Private Sub cmd_no_Click()
    
    Dim aa As Integer   

    aa = 00
   
    comb1.Text = aa

End Sub


とコーディングしていますが、
コーディング画面で3行目の
a=00
と入力すると、0が一桁消えてしまいます。
integerのほかにvariantで試してみましたが、
同じく0がひとつ消えてしまいます。

コーディング画面、処理後のコンボボックスに00と表示されるには
どうすればよいのでしょうか?
プロパティなどの設定で変えることが出来るのでしょうか?

非常に低レベルでみなさんの貴重なお時間を割いてしまい
大変申し訳ないのですが、
教えていただけたら幸いです。
投稿者 るきお  (社会人) 投稿日時 2009/8/11 05:42:14
今VB6が手元にないので確認はしていませんが、
こうです。

Private Sub cmd_no_Click()
    Dim aa As String
    aa = "00"
    comb1.Text = aa
End Sub


画面上に文字を表示する場合、どのような手段であれそれは文字列型になります。
一方、かんたさんのコードでは aa = 00 となっており、これは以下の2つの理由で数値と解釈されます。
1." がついていない
2.aaがIntegerで宣言されている。
※このどちらか片方の理由だけで数値になります。これを解消したのが上述の私の例です。

数値の場合 00 と 0 は同じ意味です。むしろ 0 のほうが自然です。
ですので、これを画面に表示しようとするときに文字列への変換が自動的に行われるのですが、VBは"0"へと変換します。そのため表示は "0" になります。

IntegerやLongなどの数値型は先頭の0はすべて無視します。
数学的にはこの方がすっきりして理にかなっています。

0001 → 1
02 → 2
000 → 0

なので、繰り返しになりますが、
aa = 00
とすると aa は 0 になります。
00と指定したのだから、文字列にするときに気を利かせて "00" にするという考え方もないことはないかもしれませんが、そのようなプログラム言語は聞いたことがありません。
一度 aa に値がセットされると、後になってセットするときにどのような指定がされたのかということはコンピューターにはわからなくなります。

こんなところでいかがでしょうか?
投稿者 るきお  (社会人) 投稿日時 2009/8/11 05:43:46
そういえば職業訓練でVB6ってちょっと古くないですか?
確かにVB6で作成されたアプリケーションはまだまだ非常に多く稼働しており、
VB6の知識も役立つとは思いますが、なんといっても10年前の製品です。
ぜひVB2008のほうも抑えておかれるとよいともいます。
投稿者 かんた  (社会人) 投稿日時 2009/8/11 18:46:40
るきおさん

お返事ありがとうございます!
助言のおかげで、「00」を入力することが出来ました。
ありがとうございます。

ちなみにVB6.0の件ですが、
ただいま講義では「AccessVBA」「ExcelVBA」を勉強しており、
講師の方が「VBAならvb6.0をやったほうがいいよ」
と助言をいただき、vb6.0を勉強しております。
一度2008のコンパイラ画面を見ましたが、
vb6.0とはぜんぜん違ったように見えました。
ただ、主流はvc2008ということなので、
少しvb6.0を勉強し、余裕が出来たら徐々に2008も
勉強して行きたいと思います。

まだまだプログラミングを勉強したばかりのため、
まずは自分で調べてみて、それでもわからなかったら、
アドバイスお願いいたします。
投稿者 流れ者  (社会人) 投稿日時 2009/8/11 20:06:16
かんたさん
VB6.0と2008の違いですが、2008は「.NET フレームワーク」という技術を使用した、新しい言語です。
構文等はVBを土台にJAVAの要素を加えたようなものになります。当然IDEも異なりますので、かんたさんが違和感を覚えたのも当然だと思います。
VBAは、AccessやExcelのマクロを記述するためにVBの構文を流用しているため、講師の方はVB6.0の学習を薦めたのだと思います。
かんたさんのキャリアで行けば、VB6.0→VB2008→VC2008の順で学習を進めれば、習得しやすいと思います。
私は、プログラマーを生業としていますが、かんたさんが一日も早く、私たちの仲間に加わっていただけることを待っております。