矢印の所のようにしたら、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

A 回答 (1件)

>imgHYOUJI.Picture = Pic2.Picture '←ここをimgHYOUJI.picture=pic(MONDAI_NO).pictureにしたい。


Pic2はPictureボックスですよね?

pic(MONDAI_NO)のpicとは?PictureBoxですか?変数ですか?
もしピクチャボックスであるならばpicと言う名前でコントロール配列である必要があります。
プロパティのところのIndex値には数値が入ってますか?

再度、情報をください。

この回答への補足

Pic2はPictureボックスですよね?
>そうです。ピクチャーボックスです。

プロパティのところのIndex値には数値が入ってますか?
>数字が入っていませんでした。数字を入れたら動くようになりました。
適切なお返事ありがとうございました。これからもよろしくお願いいたします。

補足日時:2001/10/19 01:48
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QSubとEnd Subについて

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate URL
objIE.Visible = True

Do Until objIE.Busy = False
WScript.sleep(250)
Loop

If objIE.document.URL = URL Then
BodyText = objIE.document.body.innerTEXT
AriNashi = InStr(1, BodyText, "Yahoo")
If AriNashi > 0 Then
Set objINPUT = objIE.document.getElementsByTagName("input")
objINPUT(0).value = LoginID
objINPUT(1).value = Password
objINPUT(2).Click
Else
msgbox "NO"
End If
Else
WScript.Echo " ダ メ" & Err.Description
End If
Set objIE = Nothing

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ...続きを読む

Aベストアンサー

Subで囲むとプロシージャとなります。
プロシージャは他から呼び出されない限り、勝手に動作はしません。

Sub Hoge
'実体
End Sub

と書いたなら、プロシージャの外で
Call Hoge()
のようにプロシージャを呼び出してあげてください。

QDim x As Integer = 0

いつもお世話になっております。

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

よろしくお願いいたします。

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

Qマクロで100マス計算! Dim i,j As Integer For i = 2 ToRang

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

Aベストアンサー

確認してはいませんが…


>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QExcelVBAで「SubまたはFunctionが定義されてません。」と表示されるのどうしてですか。

こんにちは。初心者です。初めてプログラムしていますが、今回もエラーはどこなのか解りません。
どなたかご教授頂きますようお願いします。
エラーは「SubまたはTunctionが定義されてません。」となります。
なお、売上情報の入力フォームに入力した後、「明細行の修正」ボタンをクリックすると「明細行の追加」のコードのPrivate Sub btnAdd_Click()の戻り下記のコードの、「Private Sub btnAdd_Click()」が黄色、18行目の「ClearMeisaiRecord Me」が青表示になります。宜しくお願いします。

Private Sub btnAdd_Click()
'明細行のデータをリストボックスへ追加
With lstMeisai
.AddItem 0
.List(.ListCount - 1, 1) = cboGoodslD.Text
.List(.ListCount - 1, 2) = txtGoodsName.Text
.List(.ListCount - 1, 3) = Format(txtGoodsPrice.Text, "#,##0")
.List(.ListCount - 1, 4) = Format(txtQuantity.Text, "#,##0")
.List(.ListCount - 1, 5) = txtGoodsUnit.Text
.List(.ListCount - 1, 6) = txtAmount.Text
.List(.ListCount - 1, 7) = txtTax.Text
.List(.ListCount - 1, 8) = txtSumWithTax.Text
End With
'合計をラベルに表示(自動関数を使用)
lblGoukeiKingaku.Caption = Format(GetGoukeikingaku(8, lstMeisai), "#,##0")

'明細行の値をクリア
ClearMeisaiRecord Me
'商品IDテキストボックスにフォーカスを移動
cboGoodslD.SetFocus
'「明細行の追加」ボタンを使用不能にする
btnAdd.Enabled = False

End Sub

こんにちは。初心者です。初めてプログラムしていますが、今回もエラーはどこなのか解りません。
どなたかご教授頂きますようお願いします。
エラーは「SubまたはTunctionが定義されてません。」となります。
なお、売上情報の入力フォームに入力した後、「明細行の修正」ボタンをクリックすると「明細行の追加」のコードのPrivate Sub btnAdd_Click()の戻り下記のコードの、「Private Sub btnAdd_Click()」が黄色、18行目の「ClearMeisaiRecord Me」が青表示になります。宜しくお願いします。

Private Su...続きを読む

Aベストアンサー

どこかの物をコピペ(参考に)して作ってるんでしょう?
そこの参考した先のprivate subか何かのClearMeisaiRecordと言う名前の物を取り込んでいないから。


人気Q&Aランキング

おすすめ情報