tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: 『[引数 'Expression'』 という意味がわかりません。
投稿日: 2008/07/30(Wed) 11:58
投稿者よねKEN
> よねKEN様、ありがとうございます。
> ご指摘の通りです。
> > エラーメッセージの文章の意味は理解できましたか?
> > また、ダンボさんのご提示の方法で何故うまく行くのか説明できますか?
> > その辺をきちんと理解していないとまた同じ問題に直面したときに
> > 自力で解決できませんよ。
> どんな勉強をしたらよいかわかりません。

理解できていないことがあるなら、提示された回答に対して
「うまくいったけど、何故うまくいったのか説明して!」と聞き返せばよいと思いますよ。
わかっていないのにわかったフリをするとか、わからないけど「まぁいいか」と
流してしまうのが一番良くないです。

★エラーメッセージの文章の意味を理解するには
Val関数をMSDNで調べます。↓
http://msdn.microsoft.com/ja-jp/library/k7beh1x9(VS.80).aspx

Val関数の定義の1つには、以下のように書かれています。
Public Overloads Function Val(ByVal Expression As Object) As Double
エラーメッセージの「引数 'Expression'」とは、
このVal関数の第一引数のExpressionを指しています。

つまり、
Mai = Val(Text1)
という一行の中での「Text1」の部分です。これが何かまずいということです。
そして、このText1が何かということはAcoさんにご説明いただいていませんが、
おそらくフォームに配置したTextBoxの1つでしょう。
Val関数は引数に渡した値を数値に変換する関数です。
そこにTextBoxを渡しても、Val関数は変換できません。

このことがエラーメッセージの意味で、ダンボさんの回答に繋がってきます。
本当にVal関数に渡して数値に変換したいのは、TextBoxそのものではなく、
そのTextBoxに入力した値ですよね。TextBoxに入力した値はTextプロパティを
介して取得できます。ですので、「Val(Text1)」ではなく「Val(Text1.Text)」
と変更するとうまくいきます。

> > ところで、
> > > 'VB2008' を使って 'VB2003の参考書' を見ながらプログラムの勉強を始めました。
> >
> > とのことですが、その参考書は本当にVB.net2003向けでしょうか?
> > 書かれているコードは、VB6以前のコードを参考にして書かれているように見受けられます。
> > このコードだとVB.net2003でもエラーになります。
> > .NET版のVBのまともな書籍であれば、「As Long」という表記がソースコード中に
> > 現れるサンプルはほとんどないと思います。
> > (VB6以前のAs Longと同等のコードはVB.NETではAs Integerのため)
> すぐ修正します。
> ありがとうございました。

使用されている参考書は「VB2003の参考書」で間違いないのでしょうか?
ということを確認して頂きたいという意図をこめてコメントしたつもりですが、
その辺は確認していただきましたか?
私の意図は「修正した方がいい」というアドバイスではありません。
どちらかというとその参考書を参考にしない方がよいというアドバイスです。
VB.net2003を対象にした書籍だとしたら、その本はひどい内容の本ですし、
異なるバージョンのVB向けの本だとしたら、おそらくVB6以前向けの本なので、
初心者の方が参考にすると混乱するだけだと思いますので。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。