Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Access 2000)
実行時エラー'91':オブジェクト変数または With ブロック変数が設定されていません。 解消方法
投稿日時: 17/09/23 16:36:04
投稿者: yrp05001

御世話になります。
送り状発行のシステムを構築しております。
 
フォームを作成し
必要な情報を入力しトランザクションでお問い合わせ番号を該当のカラムにセットし
お問い合わせ番号を管理するマスタに利用日時をセットする
という処理を以下のように記載しました。
 
メッセージボックスで
はいを選択した場合は問題なく処理を実行することができます。
 
いいえを選択した場合
なぜか
実行時エラー'91':オブジェクト変数または With ブロック変数が設定されていません。
とエラーが表示されてしまいます。
 
いいえを選択し時
実行時エラー'91':オブジェクト変数または With ブロック変数が設定されていません。
と表示させないよう方法はどのように行えばよいのでしょか
 
お手数をおかけいたしますがアドバイスの程宜しくお願い申し上げます。
 
 
Private Sub 送り状発行処理_Click()
On Error GoTo Err_送り状発行処理_Click
     
       
     
If MsgBox("送り状が発行されます。" & vbCrLf & "発行後、指定のパスに明細データが作成されます。トランザクション処理を実行してよろしいですか?", vbQuestion + vbYesNo + vbDefaultButton2, "送り状発行処理") = vbYes Then
     
     
                             
              Dim cnPub As ADODB.Connection
              Dim rsMy As New ADODB.Recordset
              Dim strTable As String
              Dim strSQL As String
              Dim bFlg As Boolean
               
              Dim b1 As Long
                                                 
              For b1 = 1 To Me!出力枚数
             
               
               
              Set cnPub = CurrentProject.Connection
              cnPub.BeginTrans
             
             
              strSQL = "SELECT * FROM " & "dbo_M_SATO_anytime_output_tracking_number_detail_courier" & " WHERE use_date_time Is Null ORDER BY ID"
              rsMy.Open strSQL, cnPub, adOpenKeyset, adLockPessimistic, adCmdText
               
              If Not rsMy.EOF Then
               
                  Me.courier_tracking_number = rsMy![tracking_number]
                  rsMy![use_date_time] = Date & " " & Time
                  rsMy![NB_work_ID] = Me.NB_work_ID
                   
                  rsMy.Update
                  bFlg = True
               
              End If
               
              rsMy.Close
             
              If bFlg = True Then
                  Me.courier_tracking_number.Requery
                  DoCmd.RunCommand acCmdSaveRecord
              End If
                   
              cnPub.CommitTrans
               
              If bFlg = False Then
                  MsgBox "お問い合わせ番号が取得できませんでした。", vbExclamation
              End If
             
              Next
             
             
 ' DoCmd.OpenReport "R-送り状発行元払い", acNormal
             
             
            MsgBox "送り状が発行されました。"
             
Else
 
Me!依頼人郵便番号.SetFocus
 
 
End If
 
 
Exit_送り状発行処理_Click:
    cnPub.Close
     
    Exit Sub
 
Err_送り状発行処理_Click:
    cnPub.RollbackTrans
    MsgBox Err.Description, vbExclamation
 
    Resume Exit_送り状発行処理_Click
     
End Sub
 

回答
投稿日時: 17/09/24 16:13:49
投稿者: Suzu

シングルステップで順に追っていくなり、If 〜 Else にブレイクポイントを設定し
どこでそのエラーが出ているか確認されましか?
 
出ている部分を確認すれば、「そうか!」と納得するはずです。
 
 
エラーの外にも、色々改善点はありそうですけど、まずはエラーをどうにかしてからですね。

トピックに返信