• 締切済み

AccessのVBAで教えて下さい

フォームから「計算月」を入力した時、T_稼働日テーブルから年月で一致した稼動日数を所定就業日数に代入する処理を下記のように作りました。「計算月」に一致するデータがなかった時の処理を、If文以下のようにしたのですがうまくいきません。どのようにしたらよいでしょうか? どなたか教えて下さい。よろしくお願いします。 Private Sub 計算月_AfterUpdate()    所定就業日数 = DLookup("稼動日数", "T_稼動日数", "年月=" & 計算月)     If Me.所定就業日数 = Null Then       MsgBox "稼動日数を確認して下さい"     End If End Sub

みんなの回答

noname#112806
noname#112806
回答No.1

確認していませんが、 If IsNull(Me.所定就業日数) Then ではどうですか?

関連するQ&A

  • アクセスVBAのエラーメッセージ

    次のようなVBAを更新前のイベントとして書いたのですが、実行しようとすると「抽出条件のデータ型が一致してません」というエラーメッセージが出ます。 これは、どういう意味のエラーメッセージなのでしょうか? よろしくお願いいたします。 If IsNull(DLookup("作業日", "T交通費マスター", "作業日 ='" & Me!作業日 & "'")) Then Exit Sub End If

  • Accessで自動更新

    T_時間割というテーブルに曜日cd、時限cd、教室cd、更新日、更新者というフィールドがあります。 また、T_更新者というテーブルに教職員cdというフィールがあります。 *このテーブルにはファイルを開いている人の教職員コードが入力されています。 T_時間割をもとにフォームを作成し、曜日時限教室のいずれかが更新されると自動で更新日が更新されるようにするのは、コードビルダで実現できました。 曜日cdのプロパティの更新後処理に  Private Sub  曜日cd_AfterUpdate()  Me.更新日 = Now  End Sub と入力しました。 同じように曜日時限教室のいずれかが更新されると更新者フィールドにT_更新者の教職員cdが自動で入力されるようにしたく色々と試しましたが、エラーになってしまいます。  Private Sub  曜日cd_AfterUpdate()  Me.更新者 = T_更新者!教職員cd  End Sub とか  Private Sub  曜日cd_AfterUpdate()  Me.更新者 = DLookUp("教職員cd","T_更新者")  End Sub など。 方法をご存知の方がいましたら、ご教示ください。

  • アクセスvba 複数のイベントをまとめて記述したい

    アクセスvba 複数のイベントをまとめて記述したいです。 下記の様な同じ処理を複数のイベントにて実行する場合、どの様に記述すればよいでしょうか? ■下記例 「年」「月」「日」それぞれのテキストボックスにて更新されれば値を結合し「日付」にセットする --------------------------------------------------------- Private Sub wk年_AfterUpdate() Me.wk日付 = Me.wk年 & "/" & Me.wk月 & "/" & Me.wk日 End Sub --------------------------------------------------------- Private Sub wk月_AfterUpdate() Me.wk日付 = Me.wk年 & "/" & Me.wk月 & "/" & Me.wk日 End Sub --------------------------------------------------------- Private Sub wk日_AfterUpdate() Me.wk日付 = Me.wk年 & "/" & Me.wk月 & "/" & Me.wk日 End Sub --------------------------------------------------------- 宜しくお願い致します。

  • Access Dlookup関数について

    Dlookupで悩んでいます。 ExcelのVlookと違い、“数字”のコードでなければ引っ張ってこれないのでしょうか? 以下、がその内容です。 「T_得意先マスタ」の得意先コードフィールドに aaa というコードがあり、得意先名フィールドに ○○商事 とあります。 どうやってもできないのです。 なぜか、aaa ではなく、数字(例. 123)にすると出ます。 教えてください。 Private Sub 得意先コード_AfterUpdate() Dim a As Variant, b As String b = "得意先コード = " & Me![得意先コード] a = DLookup("得意先名", "T_得意先マスタ", b) If IsNull(a) = True Then Me.テキスト1.Value = "該当がありません。": Me![得意先コード] = Null Else Me.テキスト1.Value = a End If End Sub

  • access VBA処理がうまくいかない

    お世話になります。 T_請求に追加する追加クエリQ_家賃請求Tがあります。 どの物件を更新するかをチェックボックスで指定し、追加クエリの抽出条件にしています。 月に1度のみの操作ですが、数人でこのデータベースを触り、 何度も追加されると困るので2度目以降はエラー処理をさせたいと思っています。 Private Sub 更新_Click() Dim ret As Integer ret = MsgBox("チェック物件を請求更新します。" & vbCrLf & "よろしいですか?", _ vbYesNo + vbQuestion, "請求月次更新") If ret = vbYes Then If DCount("[契約者CD]", "[T_請求]", "[物件CD] = " & Me!物件CD & _ " AND [T_請求]![請求年月] > #" & DateSerial(Year(Date), Month(Me![処理日]) + 1, 1) & "#") _ <> 0 Then MsgBox "すでに指定物件の請求は更新されています" & vbCrLf & _ "同じ月に請求を2度更新できません" Else DoCmd.SetWarnings False DoCmd.OpenQuery "Q_家賃請求用T" MsgBox "更新されました" DoCmd.SetWarnings True End If Else If MsgBox("処理を中止しました", vbOKOnly + vbDefaultButton1 + vbExclamation) = vbOK Then Me.Undo Cancel = True End If End If End Sub 以上のようなコードを書きました。 処理が正しくできているか確認のために、動作を調べたのですが、 まったく同じ請求年月で同じ物件CDのものが保存先のテーブルに処理されてしまいます。 どの部分を直せばいいのでしょうか? 足りない情報があれば提示しますので、よろしくお願いいたします。

  • ACCESS(VBA)の検索結果判定について

    ACCESS(VBA)の検索処理にて 以下のVBAを実行すると、かならず「★データあり処理」 に流れてしまいます。 確実に検索結果がヒットしない状態(データ全削除)にしても 同じです。 何故なのでしょうか。。 ====================== Private Sub xx_Click() Dim sSql As String sSql = "SELECT 年月 FROM 材料明細トランザクション " _ & "WHERE 年月 = " & Me.年月.Value & " " _ & "AND 材料顧客コード = " & Me.材料顧客コード.Value & " " _ & "AND 現場コード = " & Me.現場コード.Value Set db = CurrentDb Set oRs = db.OpenRecordset(sSql) If oRs.NoMatch = False Then '★データあり処理 Else 'データなし処理 End If End Sub ====================== ※初心者ですので、わかりやすく回答していただけると助かります。

  • アクセス DLookUpについて

    職員番号入力後、自動で部署コードを入力できるようにしたいのですが、このアクセスのフォームで、正常に動くフォームと動かないフォームがあり困っております。どこが悪いか御教示お願いできませんでしょうか。 -------------------------------------------------------- 使用テーブル T_職員名簿 : ID、氏名漢字、氏名カナ、部署コード、部署名 イベントプロシ―ジャ内容 Private Sub 職員番号_AfterUpdate() Me.[部署コード] = DLookup("部署コード", "T_職員名簿", "職員番号= " & Me![職員番号] & "") End Sub エラー内容 イベントプロパティに指定した式更新後処理でエラーが発生しました。 --------------------------------------------------------

  • エクセルVBA

    ユーザーフォームがあり、コマンドボタンが準備されています そのコマンドボタンをクリックした場合、処理1~処理3を実行するようにしています Sub CommandButton1_Click() CommandButton1処理1 CommandButton1処理2 CommandButton1処理3 End Sub Private Sub CommandButton1処理1() ・・・ End Sub Private Sub CommandButton1処理2() ・・・ End Sub Private Sub CommandButton1処理3() ・・・ End Sub 処理1→処理2→処理3という流れが進むかと思います 処理1の中にIf~End ifがあり、Ifに合致する場合はメッセージボックスが表示するようになっています 処理3の中に、「ユーザーフォームを閉じる」記載がされています 処理1のIfに合致する場合、メッセージボックスを表示させユーザーフォームを閉じることなく終了したいです つまりIfに合致した場合、その後の処理2、処理3をさせず処理1で終了させればいいのかと思ったのですが、そのようなことはできるのでしょうか? 処理1でIfに合致する場合、Exit Subとすると処理1は終了するかもしれませんが、その後処理2、処理3に進んでしまうので困っています よろしくお願いします

  • Access2003 四捨五入の方法について

    Access初心者です。ご存知の方がいらっしゃいましたら教えて下さい。 現在以下のようなプロシージャを作成しました。 この計算方法だと小数点が切り捨てとなり、例として1000.5円という金額になった場合、1,000円として 表示されてしまいます。これを1,001円で表示できるようにしたいのですが、どのようなプロシージャを作成 したら良いかご存知の方がいらっしゃいましたら教えて下さい。よろしくお願い致します。 以下プロシージャ Private Sub 課税_AfterUpdate() On Error GoTo 課税_AfterUpdate_Err If (Forms!F_請求書!課税 = 1) Then Forms!F_請求書!消費税率 = 0 End If If (Forms!F_請求書!課税 = 2) Then Forms!F_請求書!消費税率 = 0.05 End If [小計] = Nz(DSum("単価*数量", "Q_請求明細", "[請求番号]=forms![F_請求書]![請求番号]")) [消費税] = Fix([小計] * Nz([消費税率])) [合計] = [小計] + [消費税] 課税_AfterUpdate_Exit: Exit Sub 課税_AfterUpdate_Err: MsgBox Error$ Resume 課税_AfterUpdate_Exit Me.Recalc End Sub

  • Access テキストボックスの文字色

    チェックボックスにチェックが入っていない場合、テキストボックス内の文字色を赤に、チェックを入れたら黒に、またチェックを外したら赤に、という風にしたいです。 条件付書式で設定した場合、条件を満たしたらすぐには反映されず、一旦別のレコードに移動して戻ってくると反映されています。 VBAのコードで Private Sub 処理_AfterUpdate() If チェックボックス = 0 Then '文字色変更処理 Else '文字色変更処理 End If End Sub のようにすれば出来るのではないかと思うのですが、 文字色変更のコードがわかりません。 どなたか教えてください。

専門家に質問してみよう