• 締切済み

VB初心者です。

Private Function mondai_yomikomi() As Integer '問題読み込み処理 int_seikai = 1 l_mondai.Caption = "問題" + lng_mondai End Function を Call mondai_yomikomiで呼び出すことが 出来ないんですが・・・ 何故ですかね??? どうやって呼び出したら良いのでしょうか?

みんなの回答

noname#118114
noname#118114
回答No.2

「Private」だと同一モジュール(ファイル)でないと無効になります。 呼び出し元は同一モジュールになっていますか? もし、異なるモジュールなっているのであれば「Public」を使用してください。

peche-one
質問者

お礼

アドバイスありがとうございます。 挑戦してみます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

何のためにFunction にしたのでしょうか? Call では、関数の戻り値を受け取る事が出来ません。 でも、mondai_yomikomiの戻り値が設定されていませんよね。 何がしたいのでしょうか?

peche-one
質問者

お礼

そうですよね。 返答ありがとうございました。 色々試してたらできました。

関連するQ&A

  • 矢印の所のようにしたら。。。

    矢印の所のようにしたら、subまたはfunctionが定義されていませんって出ます。いくら変えてみてもだめです。解決できる方助言してください。お願いします。 Const maxMONDAI = 5 '問題の最大数格納場所 Dim MONDAI_NOKORI '残り問題数格納場所 Dim MONDAI_NO As Integer '現在の問題番号格納場所 Dim SEIKAI As Integer '正解した問題数格納場所 Function GETMONDAI_NO() As Integer Randomize '以下の式で「1-5」までの整数を作る。 GETMONDAI_NO = Int(Rnd * maxMONDAI) + 1 End Function '初期設定 Sub initialize() MONDAI_NOKORI = maxMONDAI '残り問題数を初期値に戻す。 End Sub '終了ボタンを押した時の動き Private Sub cmdEND_Click() Dim END_BT As Integer END_BT = MsgBox("終了しますか?", vbYesNo + vbQuestion, "終了の確認") If END_BT = vbYes Then End End If End Sub '開始ボタンを押した時の動き Private Sub cmdSTART_Click() Call initialize '初期設定呼び出し MONDAI_NO = GETMONDAI_NO '現在の問題番号を得る。 txtRANSU.Text = Str(GETMONDAI_NO) '乱数の表示デバック用 txtNOKORI.Text = Str(MONDAI_NOKORI) '残り問題数の表示 imgHYOUJI.Picture = Pic2.Picture '←ここをimgHYOUJI.picture=pic(MONDAI_NO).pictureにしたい。 End Sub

  • vb6.0のプログラム

    今こんなプログラムを作っているのですがなぜか、足りない部分があると言われて困っております。 できれば教えてください。 図 ーーーーーーーーーーーーーーーー from ーーーーーーーーーーーーーーーー 残り30秒[ーーーーラベルーーーー] 000+000=000←(3つともlabel) □-------------------□←HScrollbar max100 min0 [コマンドボタン] [タイマー]←非表示 ーーーーーーーーーーーーーーーー コード Private intCount As Integer Private intSecond As Integer Private Sub cmdStart_Click() Dim intNum1 As Integer Dim intNum2 As Integer If cmdStart.Caption = "Start" Then intCount = 0 intSecond = 30 lblResult.Caption = "" cmdStart.Caption = "OK" tmrSecond.Enabled = True ElseIf cmdStart.Caption = "OK" Then If CInt(lblAnswer.Caption) = CInt(lblNum1.Caption) + CInt(lblNum2.Caption) Then lblResult.Caption = lblResult.Caption & "○" intCount = intCount + 1 Else lblResult.Caption = lblResult.Caption & "×" End If intNum1 = Rnd() * 50 intNum2 = Rnd() * 50 lblNum1.Caption = intNum1 lblNum2.Caption = intNum2 End If End Sub Private Sub hsbAnswer_Change() lblAnswer.Caption = hsbAnswer.Value End Sub Private Sub tmrSecond_Timer() intSecond = intSecond - 1 lblTime.Caption = "残り" & intSecond & "秒" If intSecond = 0 Then tmrSecond.Enabled = False MsgBox (intCount & "問正解") cmdStart.Caption = "Start" Else End If End Sub どうぞよろしくお願いします。

  • VB6 Form内のDragDrop

    VB6でForm内にCommandButtonがいくつか有ります。 各CommandButtonはClickするとShellオブジェクトでファイルを開く様になっています。 やりたいことは 2つのCommandButton間をDragDrop?によりCaptionを入れ替えたいです。 (CommandButton間をマウスDragDropでCaption名入れ替え) MouseDownとDragDropイベントで何とかなると思いましたがうまくいきません。 Dim dd As Integer Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then dd = 1 'CommandボタンNo, End If End Sub Private Sub Command2_DragDrop(Source As Control, X As Single, Y As Single) Dim cn As String cn = Command2.Caption Command2.Caption = Controls("Command" & dd).Caption Controls("Command" & dd).Caption = cn End Sub CommandButtonプロパティでDragModeを自動にするとShellオブジェクトでファイルが開かないし サイトで調べたところファイルの移動やコマンド自体の移動などで分かりませんでした。 ご教授お願い致します。

  • VBのfunctionの引数について

    2の Double型と 3の Single型のように送る側と受け取る側の変数の型が 違ってもよいのでしょうか?プログラムはそのまま実行できたのですが・・・・。 Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim koku As Integer Dim san As Integer Dim rika As Integer Dim ave As Double------------------------------------1 koku = Val(TextBox1.Text) san = Val(TextBox2.Text) rika = Val(TextBox3.Text) ave = (koku + san + rika) / 3 Label5.Text = Round(ave)-------------------------------2 End Sub Private Function Round(ByVal sngvalue As Single-----3) As Integer Dim intvalue As Integer intvalue = Int(sngvalue + 0.5) Return intvalue End Function End Class

  • 自作したメソッド・・・引数はなるべく省略すべき?(VB2005)

    自作したメソッドに関して、引数はなるべく設定するべきでしょうか?それとも、引数は省略できるなら省略したほうがよいでしょうか? 下記(a)、(b)は例です。 a)引数はなるべく省略   ---------------------------------   Private Sub hoge()     Call foo()   End Sub   Private Sub foo()     Dim hoga As integer = Pbar    'プロパティ「Pbar」の値を設定     '処理   End Sub   --------------------------------- b)あえて引数を設定   ---------------------------------   Private Sub hoge()     Dim hoga As integer = Pbar    'プロパティ「Pbar」の値を設定     Call foo(hoga)   End Sub   Private Sub foo(ByVal hoga As integer)     '処理   End Sub   --------------------------------- 現在、(b)のようにあえて引数を設定したほうが、呼び出し先のメソッドがどういう処理を行っているかを掴めていいかな?と考え始めています。 ご助言よろしくお願い致します。

  • アクセスのVBについて

    先ほど立てたものですが、第二段です。先ほどは詳しい説明ありがとうございした。しかし、【Private Sub form_open(Cancel AS Integer)】のCancelの使い方が今一分りません。下の文を見ていただきたいのですが、 ★[F_顧客]フォームでは、OPENARGS引数で受け取った値を利用して、フォーム の[票題]プロパティを変更する処理を行います。 Private Sub form_open(Cancel AS Integer)  'OPENARGSプロパティによって[標題]プロパティを変更    Select Case Me.OPENARGS   Case "追加"    ME.Caption="F_顧客(追加モード)"     Case "編集"    ME.Caption="F_顧客(編集モード)"     Case Else    ME.Caption="F_顧客"  End Select End Sub 例えば、上記の場合などはなぜキャンセルが必要なのでしょうか・・・。 初心者のため、どなたか細かくご説明いただければたすかります。 m(__)m

  • vb コンボボックスのイベントについて

    こんばんわ。 コンボボックスで、 指定の値をマウス操作でクリックしたときと、 キーボードの上下で、移動後returnを押したときだけ、 MsgBox "処理実行" を実行したいです。 keystateを使ってみたのですが、前の情報が残っているのかうまくいきません。keystateの情報をクリアさせるか、シンプルに上記を動作させる何かよい方法はありますでしょうか。 Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Dim flg1 As Boolean Private Sub form_load() Combo1.AddItem (11) Combo1.AddItem (22) Combo1.AddItem (33) Combo1.AddItem (44) End Sub Private Sub Combo1_Keyup(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then 'return flg1 = True Call Combo1_click End If End Sub Private Sub Combo1_click() If (GetKeyState(&H26) <> 0) Or (GetKeyState(&H28) <> 0) Then ' ↑↓ If flg1 = False Then Exit Sub End If End If MsgBox "処理実行" flg1 = False End Sub

  • VBでコンパイル エラー 変数が必要です

    すみません、教えてください イミージエイトウインドウから myttを実行すると 「変数が必要です」のエラーがでます 教えてください Public Type myType Pos As Integer xx As Integer yy As Integer find As Integer '-1あり 0なし End Type Function mytt() Dim myzz As myType myzz.Pos = 45 mySerch (myzz) '←ここでエラー End Function Function mySerch(ww As myType) As myType ww.find = -1 End Function

  • VB6でスロットを作成したい

    VB6歴2ヶ月の初心者です。 フォーム上に ラベルコントロールが三つ コマンドボタンが二つ タイマーコントロールが一つ あります。 タイマーのプロパティは Enabled False Interval 10 です。 スロットを作成したいのですが、 ボタン1を一回押すごとに左からスロットが回り、 最後にボタン2で動きを止めたいのです。 一応自分でも書いてみたのですが、ここで行き詰まりました。 ウワァァァァァァヽ(`Д´)ノァァァァァァン! Private Sub Command1_Click() Timer1.Enabled = True End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim slot As Integer slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End Sub 思い通りに動かすにはどんなコードにしたらいいですか?

  • VB.NETのSendMessageを教えてください

    SendMessageというAPIを試しているのですが、まず試しに Button2.Text = "test" と同じ結果をSendMessageでやってみたいのですが 下のようにしてみたのですが、変更になりませんでした。 どのようにすれば良いかご教授頂ければ幸いです。よろしくお願致します。 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer Private Const WM_SETTEXT As Integer = &HC Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim h As Integer h = Me.Button2.Handle.ToInt32 SendMessage(h, WM_SETTEXT, 0&, "test") End Sub VB.NET2003 FrameWork1.1 WindowsXP-PRO(SP2) です。

専門家に質問してみよう