tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル『[引数 'Expression'』 という意味がわかりません。
記事No7878
投稿日: 2008/07/29(Tue) 17:09
投稿者Aco
よろしくお願いします。

'VB2008' を使って 'VB2003の参考書' を見ながらプログラムの勉強を始めました。

プリンターに出力するプログラムですが、コーディングしているときエラーがないので実行しましたら、
『引数 'Expression' は型 'TextBox' に変換できません。』というエラーメッセージが出て動かなくなりました。プログラムは以下のように書きました。(これは中途ですが・・・)

Public Class Form1

    Dim Sagyo As Long
    Dim Mai As Integer
    Dim Tobi As Integer
    Dim Num As Long
    Dim Num_1 As Long
    Dim Num_2 As Long
    Dim Num_3 As Long

    Private Sub Tenki()

        Mai = Val(Text1)
        Tobi = Val(Text2)
        Num_1 = Val(Text3)
        Num_2 = Val(Text4)

        If Num_2 = "" Then
            Num_2 = Num_1 + Tobi
            Num_3 = Num_2 + Tobi
        Else
            Num_3 = Val(Text5)
        End If

    End Sub

『Mai = Val(Text1)』の行が黄色く反転されて


『引数 'Expression' は型 'TextBox' に変換できません。』というエラーメッセージが出てしまいました。

どうしたら良いかわかりません。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: 『[引数 'Expression'』 という意味がわかりません。
記事No7879
投稿日: 2008/07/29(Tue) 18:27
投稿者ダンボ
>         Mai = Val(Text1)

        Mai = Val(Text1.Text)

に直せばいいでしょう。他も同様に。
(VB2008なのでちょっと不安。デフォルトプロパティが復活したかな?)

[ツリー表示へ]
タイトルRe^2: 『[引数 'Expression'』 という意味がわかりません。
記事No7880
投稿日: 2008/07/29(Tue) 19:19
投稿者Aco
> >         Mai = Val(Text1)
>
>         Mai = Val(Text1.Text)
>
> に直せばいいでしょう。他も同様に。
> (VB2008なのでちょっと不安。デフォルトプロパティが復活したかな?)

ダンボ様、ありがとうございました。

うまく出来ました!

でも、プリンターにかけたら、別の問題も出てしまいました。

これも教えていただけないでしょうか?

[ツリー表示へ]
タイトルRe^3: 『[引数 'Expression'』 という意味がわかりません。
記事No7884
投稿日: 2008/07/30(Wed) 07:00
投稿者ゆうき
ゆうきです。

> でも、プリンターにかけたら、別の問題も出てしまいました。
どんな問題でしょうか。

> これも教えていただけないでしょうか?
どのような問題がおきたのか教えてもらわないと答えられませんね。

[ツリー表示へ]
タイトルRe^3: 『[引数 'Expression'』 という意味がわかりません。
記事No7885
投稿日: 2008/07/30(Wed) 09:17
投稿者よねKEN
> > >         Mai = Val(Text1)
> >
> >         Mai = Val(Text1.Text)
> >
> > に直せばいいでしょう。他も同様に。
> > (VB2008なのでちょっと不安。デフォルトプロパティが復活したかな?)
>
> ダンボ様、ありがとうございました。
>
> うまく出来ました!

エラーメッセージの文章の意味は理解できましたか?
また、ダンボさんのご提示の方法で何故うまく行くのか説明できますか?
その辺をきちんと理解していないとまた同じ問題に直面したときに
自力で解決できませんよ。

ところで、
> 'VB2008' を使って 'VB2003の参考書' を見ながらプログラムの勉強を始めました。

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

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

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

[ツリー表示へ]
タイトルRe^5: 『[引数 'Expression'』 という意味がわかりません。
記事No7891
投稿日: 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以前向けの本なので、
初心者の方が参考にすると混乱するだけだと思いますので。

[ツリー表示へ]
タイトルRe^4: 『[引数 'Expression'』 という意味がわかりません。
記事No7888
投稿日: 2008/07/30(Wed) 10:39
投稿者ダンボ
> > 'VB2008' を使って 'VB2003の参考書' を見ながらプログラムの勉強を始めました。
>
> とのことですが、その参考書は本当にVB.net2003向けでしょうか?

'VB2003の参考書'が'Office2003の参考書'あるいは'Excel2003の参考書'の誤記
だと推理して見ました。
これならMai = Val(Text1)も正しいコーディングとなるので。

(お作法としてデフォルトプロパティは使わない方が吉)

[ツリー表示へ]
タイトルRe^5: 『[引数 'Expression'』 という意味がわかりません。
記事No7894
投稿日: 2008/07/30(Wed) 19:08
投稿者Aco
> > > 'VB2008' を使って 'VB2003の参考書' を見ながらプログラムの勉強を始めました。
> >
> > とのことですが、その参考書は本当にVB.net2003向けでしょうか?

すみません。
『.Text』見落としていました。
お騒がせして申し訳ありませんでした。
>
> 'VB2003の参考書'が'Office2003の参考書'あるいは'Excel2003の参考書'の誤記
> だと推理して見ました。
> これならMai = Val(Text1)も正しいコーディングとなるので。
>
> (お作法としてデフォルトプロパティは使わない方が吉)

エラーが出て慌ててしまい、真っ暗になりましたが、おしえていただき、正直とても嬉しかったです。

よねKEN様の説明プリントアウトしました。

『改ページ』の事、もうちょっと考えます。

ダンボ様、よねKEN様どうもありがとうございました。

[ツリー表示へ]