• 締切済み

プログラムのエラー

少し前にhttp://oshiete1.goo.ne.jp/qa5630279.html←ここで質問し教えていただいたコードで、 Private Sub button_start_Click() Dim nLOOP1 nQuestions = Worksheets("問題集").Cells(1, 2).Value nQuestions = Worksheets("問題集").Cells(1, 2).Value If nQuestions > 100 Then nQuestions = 100 End If button_start.Enabled = False Button_stop.Enabled = True Button_saiten.Enabled = True For nLOOP1 = 0 To nQuestions - 1 nResult(nLOOP1) = -1 Worksheets("問題集").Cells(3 + nLOOP1, 4).Value = -1 Next nCount = 0 Mondai End Sub nResult(nLOOP1) = -1 この部分に「SubまたはFunctionが定義されていません」となるのですが、解決方法が見つかりません、分かる方いらっしゃいますか?

みんなの回答

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.4

回答番号:No.2さんの回答の通りですね。 「いただいたコード」ではグローバル変数として Dim nQuestions Dim nTarget Dim nWaitFlag Dim nResult(100) ' -1=未実施/0=不正解/1=正解 Dim nCount が定義されていますが、それが抜けていれば未定義になります。 nResult(nLOOP1) は括弧がついていますから Sub/Function と解釈されていますが、 Sub nResult() Function nResult() は定義されていませんから、エラーですね。 とりあえず、「いただいたコード」そのまま記述(コピー)してから、質問者の目的に合うように直していったらいかがでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • digitalian
  • ベストアンサー率29% (323/1104)
回答No.3

2行目 Dim nLOOP1 as integer ではないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.2

>Dim nResult(100) ' -1=未実施/0=不正解/1=正解 を勝手にはしょってしまったからではないですか?

全文を見る
すると、全ての回答が全文表示されます。
  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

メッセージの通りですね。 End Sub の後に nResult(nLOOP1) = -1 がありますから、 nResult(nLOOP1) = -1 は「SubまたはFunctionが定義されていません」ですね。

annnaray
質問者

補足

すみません、書き方が悪かったですね nResult(nLOOP1) = -1←この部分(12行目です) に「SubまたはFunctionが定義されていません」となるということです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで四者択一の問題を作りたい。・フォーム画面のボタンをクリック、解答、採点画面を出したい。

    一応、フォーム画面で、ボタンをクリックするとデータシートから 持ってきて、それを問題がなくなるまで繰り返したいのですが、うまく いきません。 Private Sub cmd次_click() Dim n As Integer For n = 3 To Cells(Rows.Count, 1).End(xlUp).Row txt設問.Value = Worksheets("データ").Cells(n, 1).Value   txt問1.Value = Worksheets("データ").Cells(n, 2).Value txt問2.Value = Worksheets("データ").Cells(n, 3).Value txt問3.Value = Worksheets("データ").Cells(n, 4).Value txt問4.Value = Worksheets("データ").Cells(n, 5).Value n = n + 1 Next n End Sub Private Sub cmd判定_click() If op3.Value = True Then txt正解.Value = "○" Else txt正解.Value = "×" End If End Sub Private Sub cmd消去_Click() txt設問.Value = "" txt問1.Value = "" txt問2.Value = "" txt問3.Value = "" txt問4.Value = "" txt正解.Value = "" op1.Value = "" op2.Value = "" op3.Value = "" op4.Value = "" End Sub よろしければ、教えていただけないでしょうか?

  • エクセル

    TEXTBOX1 button1 button2 button3 TEXTBOX2 button4 button5 button6 comanndobuton1 Private Sub CommandButton1_Click() Dim cnt As Long cnt = Cells(Rows.Count, 1).End(xlUp).Offset(1).Row If Me.OptionButton1 = True Then Cells(cnt, 1) = Me.TextBox1 Else Cells(cnt, 1) = "" If Me.OptionButton4 = True Then Cells(cnt + 1, 1) = Me.TextBox2 Else Cells(cnt + 1, 1) = "" End If End If If Me.OptionButton2 = True Then Cells(cnt, 2) = Me.TextBox1 Else Cells(cnt, 2) = "" If Me.OptionButton5 = True Then Cells(cnt + 1, 2) = Me.TextBox2 Else Cells(cnt + 1, 2) = "" End If End If If Me.OptionButton3 = True Then Cells(cnt, 3) = Me.TextBox1 Else Cells(cnt, 3) = "" If Me.OptionButton6 = True Then Cells(cnt + 1, 3) = Me.TextBox2 Else Cells(cnt + 1, 3) = "" End If End If End Sub これで実行するとbutton1がtrueでありbutton4がtrueのように    bu2とbu5 bu3とbu6が一緒の時だけうまく以下なのですが ご指摘いただけないでしょうか

  • DTPickerで入力したらの検索が出来なくなりました。

    お世話になります。 質問ですが 以下のVBAコードがあります。Sheet3のCells(2, 6)に記入した日付によってSheet1の検索を一部行うのですが、Cells(2, 6)への入力をDTPickerを使って行うようにしたら該当する日付がありませんのエラーが帰ってきます。たぶん書式が違うせいかなと思うのですがどうすればいいのでしょうか? どなたか分かる方いらっしゃいますか?よろしくお願いします。  Private Sub CommandButton1_Click() Dim trgA As Variant, trgB As Variant With Worksheets("Sheet3") If IsEmpty(.Cells(2, 7)) Then MsgBox "個数が空です。", vbCritical: Exit Sub '日付 trgA = Application.Match(.Cells(2, 6).Value2, Worksheets("Sheet1").Range("A:A"), 0) If IsError(trgA) Then MsgBox "該当する日付がありません。", vbCritical: Exit Sub '製品名 trgB = Application.Match(.Cells(2, 4).Value, Worksheets("Sheet1").Range("2:2"), 0) If IsError(trgB) Then MsgBox "該当する製品名がありません。", vbCritical: Exit Sub If Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = "" Then Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = .Cells(2, 7).Value Else If MsgBox("上書きしますか", vbQuestion + vbOKCancel) = vbOK Then Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = .Cells(2, 7).Value End If End If End With End Sub

  • 二つの行のうち、どちらかが、セルの値がゼロのとき、その列を非表示にする

    二つの行のうち、どちらかが、セルの値がゼロのとき、その列を非表示にする windows7 excelでマクロ作成中の初心者です。 以下のコードで27行目のセルの値が0のとき列を非表示にします。 Private Sub 列非表示_Click() Dim 列番号 As Long 'シートが保護されていたら保護を解除 Worksheets("最新明細").Activate If ActiveSheet.ProtectContents = True Then ActiveSheet.Unprotect End If For 列番号 = 4 To 33 If Cells(27, 列番号).Value = 0 Then Cells(27, 列番号).EntireColumn.Hidden = True End If Next 列番号 ActiveSheet.Protect End Sub ------------------------------------------------- Private Sub 列表示_Click() Dim 列番号 As Long 'シートが保護されていたら保護を解除 Worksheets("最新明細").Activate If ActiveSheet.ProtectContents = True Then ActiveSheet.Unprotect End If For 列番号 = 4 To 33 If Cells(27, 列番号).Value = 0 Then Cells(27, 列番号).EntireColumn.Hidden = False End If Next 列番号 ActiveSheet.Protect End Sub この27行と、もう一行の28行、どちらかの行が、0のときに列を非表示・表示したいのですが、出来ません。 試行錯誤してもできないのです。どうかよろしくおねがいします。 For 列番号 = 4 To 33 If Cells(27, 列番号).Value = 0 or Cells(28, 列番号).Value = 0 Then or( Cells(27, 列番号).EntireColumn.Hidden = True, Cells(27, 列番号).EntireColumn.Hidden = True) End If

  • セルにデータが入っていないのを見つけるには?

    ユーザフォームにあるコマンドボタンを押すと、Sheet1のセル"D4"から横方向→にセルの中にデータが入っていない所までループし、データが入っていないセルがあったら"END"が入力され終了したいのですが。。 Private Sub CommandButton5_Click() Dim u As Integer u = 4 Do Until Worksheets("Sheet1").Cells(7, u).Value = "" If Worksheets("Sheet1").Cells(7, u).Value = "" Then Worksheets("Sheet1").Cells(7, u).Value = "END" End If u = u + 1 Loop End Sub このコードでは無反応でした。なにがいけないのかご指摘お願いいたします。 ExcelVBAです。

  • 条件判定について

    下記のようなコードを作成しましたが、チェックボックスがオンでもオフでもTextBox4.Valueの値が返ります。どこがいけないでしょうか。 Private Sub CommandButton2_Click() If CheckBox1.Visible = True Then Worksheets("sheet1").Range("a1") = TextBox4.Value Else Worksheets("sheet1").Range("a1") = TextBox3.Value End If End Sub

  • 実行時エラー1004空白セルを上に詰める

    よろしくお願いします いろいろ試しましたが解決できませんでした。 Private Sub CommandButton1_Click() With Worksheets("Sheet1") For r = 2 To .Cells(Rows.Count, "C").End(xlUp).Row If .Cells(r, "C").Value = 提出先.Value Then Me.提出先.Value = "" .Cells(r, "C").Value = "" Else End If Next r .Range("J3").Value = "" ’下記の構文でエラーが出ます ’実行時エラー1004 ’アプリケーション定義またはオブジェクト定義のエラーです .Range(Range("C2"), Cells.SpecialCells(xlCellTypeLastCell)).SpecialCells (xlCellTypeBlanks).Delete Shift:=xlUp End With End Sub

  • エクセル・見積表の抽出印刷方法?その3

    先日(No.130709とNo.130958)、エクセルで作成した見積表の数量を入力した行のみを印刷したいとお聞きした者です。その際は、多くの方に回答を頂き、誠にありがとうございました。おかげさまで完成間近ですが、もう1つ問題が出てきてしまいました。宜しくお願いします。 商品によっては、行を追加し手で入力しなくてはならないものがあるので、あらかじめ空白行(金額列には0が入っています)を設けておきたいのですが、そうすると抽出した際、空白行も一緒に抽出されてしまいます。空白行がある場合は、下記の構文のやり方では無理なのでしょうか?空白行も非表示にしたいのです。 Private Sub CommandButton1_Click() Dim i As Integer i=2 Do Until i=-1 If Worksheets("Sheet1").Cells(i,1).Value=""Then i=-1 Else If Worksheets("Sheet1").Cells(i,6).Text=0Or_ Worksheets("Sheet1").Cells(i,6).Text=""Then Worksheets("Sheet1").Rows(i).Select Selection.EntireRow.Hidden=True End If i=i+1 End If Loop End Sub Private Sub CommandButton2_Click() Worksheets("Sheet1").Cells.Select Selection.Rows.Hidden=False End Sub 以上です。 宜しくお願いします。

  • エクセルで作る見積表の抽出方法(ゼロ入力でも抽出したい!)

    OSはWindowsNT、Excel97です。 こんにちは。以前こちらで「見積表の抽出方法」をお聞きして素晴らしい見積表を作らせて頂きました。あの時は、数量欄に数字を入れた行のみ抽出し、さらに元に戻す事も出来るという、以下の2つの構文を教えて頂きました。 Private Sub CommandButton1_Click() ActiveSheet.Unprotect Dim i As Integer i = 2 Do Until i = -1 If Worksheets("単価表").Cells(i, 6).Value = "" Then i = -1 Else If Worksheets("単価表").Cells(i, 6).Text = 0 Or _ Worksheets("単価表").Cells(i, 6).Text = "" Then Worksheets("単価表").Rows(i).Select Selection.EntireRow.Hidden = True End If i = i + 1 End If Loop ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub Private Sub CommandButton2_Click() ActiveSheet.Unprotect Worksheets("単価表").Cells.Select Selection.Rows.Hidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub それでもう1つ質問なのですが、 この構文では、数量欄にゼロ(0)を入れると抽出出来ません。できればゼロを入れた時も抽出されるようにしたいのです。 つまり数量欄が空欄以外はすべて抽出されるようにしたいのです。 説明不足でしたら補足致しますので、宜しくお願い致します。

  • EXCEL VBA 

    Excel VBAで アンケート集計をしたいと思い、プログラムを作ったのですが、J列までは入力がうまくいくのですが、K列にデータを入れて次の行にデータを入れると もともと存在していたKれつのデータが消えてしまします。 どう修正すれば ちゃんとデータが残ってくれるのでしょうか?  誰か教えてください Option Explicit Private Sub UserForm_Initialize() Dim チェックボックス As Control With cboBlood .AddItem "A型" .AddItem "B型" .AddItem "O型" .AddItem "AB型" End With cboBlood.ListIndex = -1 txtNo.Value = WorksheetFunction.Max( _ [Database].Resize(, 1)) + 1 txtNo.Enabled = False txtName.Text = "" optMale.Value = True txtAge.Value = 0 For Each チェックボックス In fraOS.Controls チェックボックス.Value = False Next txtName.SetFocus End Sub Private Sub cmdEntry_Click() Dim 行 As Long Dim 確認 As Integer 確認 = MsgBox("データを登録します。" _ & "よろしいですか?", vbYesNo) If 確認 <> vbYes Then Exit Sub 行 = [Database].Rows.Count + 1 [Database].Cells(行 - 1, 1).EntireRow.Insert [Database].Offset(行 - 1).Resize(1).Copy _ [Database].Cells(行 - 1, 1) [Database].Offset(行 - 1).Resize(1).ClearContents [Database].Cells(行, 1) = txtNo.Value [Database].Cells(行, 2) = txtName.Text If optMale.Value = True Then [Database].Cells(行, 3) = "男性" Else [Database].Cells(行, 3) = "女性" End If [Database].Cells(行, 4) = cboBlood.Text [Database].Cells(行, 5) = txtAge.Value If chkWin.Value = True Then _ [Database].Cells(行, 6) = "○" If chkMac.Value = True Then _ [Database].Cells(行, 7) = "○" If chkLinux.Value = True Then _ [Database].Cells(行, 8) = "○" If chkOther.Value = True Then _ [Database].Cells(行, 9) = "○" If chkOther.Value = True Then _ [Database].Cells(行, 10) = "○" Unload frmNew End Sub Private Sub cmdCancel_Click() Unload frmNew End Sub

印刷できない
このQ&Aのポイント
  • PCからA4データが送信されていますが、はがき印刷できません。
  • お使いの環境はWindows10で、無線LANで接続されています。
  • 関連するソフト・アプリや電話回線の種類についての情報はありません。
回答を見る

専門家に質問してみよう