Microsoft Access 掲示板

Nullが不正です。

3 コメント
views
4 フォロー

しばらくAccessから離れていたら、わからなくなってしまいました。
下記、エラーが出ます。対応方法をおしえていただけませんでしょうか。

Private Sub btn客パス_Click()

Dim infoPath As String
infoPath = Me!txt客パス

    If IsNull(txt情報) Then
    MsgBox "先に情報を入力してください。"
        ElseIf IsNull(txt客パス) Then
        MsgBox "客パスが入力されていません。"
            ElseIf AcDir(infoPath, vbDirectory) = "" Then
            MsgBox "保存しているパスが存在しません。パスを確認してください。"
                Else: Shell "Explorer.exe " & Me!txt客パス, vbNormalFocus

    End If
    
End Sub
おもち
作成: 2021/01/22 (金) 14:54:34
最終更新: 2021/01/22 (金) 14:55:32
通報 ...
1
ゲッキョク駐車場 2021/01/22 (金) 17:29:06 cb55f@f6500

Me!txt客パス の値がNullになっていませんか?

String型にNullは代入できないようになっています。
Variant型にするか、
代入時に If (IsNull(n) = False) Then 等でNullを代入しないようにしたらどうでしょうか…。

それ以降のif節内については素人なのでわかりかねますが……申し訳ないです。

3
おもち 2021/01/27 (水) 23:35:47 0029a@1c915 >> 1

>String型にNullは代入できないようになっています。

そういうことだったんですね!とても参考になりました。ありがとうございます。

2

コード記述はそれぞれあると思いますが以下のようにしてみてはどうでしょうか?

Dim infoPath As String

'infoPath変数に代入するのであれば先に判定した方が良いと思います。
'コントロールの値が、空白("")またはNULL値かによって条件処理
if len(nz(trim(Me!txt客パス)))<>0 then
    infoPath = trim(Me!txt客パス)
else
    MsgBox "客パスが入力されていません。",vbOKOnly + vbExclamation
    exit sub
end if

'txt情報は、コントロール名かな?
'上記と同じように空白("")またはNULL値かによって条件処理
if len(nz(trim(Me!txt情報)))<>0 then
    'AcDirは自作の関数でしょうか? そのままカキカキ..
    If AcDir(infoPath, vbDirectory) <> "" Then
        Shell "Explorer.exe " & Me!txt客パス, vbNormalFocus
    else
        MsgBox "保存しているパスが存在しません。パスを確認してください。",vbOKOnly + vbExclamation
        exit sub
    end if
else
    MsgBox "先に情報を入力してください。",vbOKOnly + vbExclamation
    exit sub
end if

ポイントは、空白(""=vbnullstring)または、NULL値どちらでも入力文字数が0(ゼロ)であれば未入力としています。
参考になれば幸いです。