- ベストアンサー
エラー13 型が一致しません
- 氏名を入力するとフリガナが自動的に表示されますが、入力しないままフリガナに移動すると「エラー13 型が一致しません」というエラーが表示されます。
- 修正しやすいように、フリガナを出した後にカーソルをフリガナの最後に移動する処理を追加しましたが、何も入力せずにフリガナに移動するとエラーが発生します。
- 「エラー13 型が一致しません」というエラーを回避する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 > エラーが発生せず、該当の住所はありませんみたいなメッセージだけを出して、 > そのままOKして抜け出せる感じ 「住所」は「招待者フリガナ」の間違い、でよろしいでしょうか? そうであれば、とりあえず、 1)氏名が空欄 2)氏名は埋まっているがフリガナが空欄 3)両方とも一応埋まっている という場合が考えられると思いますので、それぞれを場合分けすることになります。 (Access2003で今確認した限りではCopy&Pasteの場合でも、対応するフリガナが 設定されたのですが、以前Access2000辺りで確認した際はPasteだとフリガナが 設定されなかったような気がするので・・・) 具体的には、以下の通りです; (なお、今回の回答では、招待者フリガナ.ValueがNullの場合がIf文で既に切り分け 済みなので、前回回答したNz関数は必要なくなります) Private Sub 招待者氏名_AfterUpdate() If IsNull(招待者氏名) Then '「招待者氏名」の値が削除された場合 MsgBox "招待者氏名を入力して下さい。" Else '「招待者氏名」が入力された場合 With 招待者フリガナ .SetFocus If IsNull(招待者フリガナ) Then 'フリガナが空欄だった場合 MsgBox "フリガナを入力して下さい。" Else 'フリガナが設定された場合 .SelStart = Len(.Value) End If End With End If End Sub
その他の回答 (1)
- DexMachina
- ベストアンサー率73% (1287/1744)
Len関数は、引数(ご質問の場合では「.Value」)がNull(空白)の時には 文字数(数値)ではなくNullが返されるため、数値しか受け取れない SelStartに代入しようとしたところで「型が一致しません」というエラーに なったものと思います。 対策としては、Nullを他の値に変換するNz関数を使用します。 (現在) .SelStart = Len(.Value) (変更後) .SelStart = Nz(Len(.Value),0) Nz関数の1番目の引数がNullの場合は、2番目の引数の値がNullの代わりに 使用されます。 これで、ご質問のエラーは発生しなくなると思います。
お礼
ご返答ありがとうございます! その方法でまったくその通りになりました!本当にありがとうございます! できればエラーが発生せず、該当の住所はありませんみたいなメッセージだけを出して、そのままOKして抜け出せる感じでやりたいのですが。
お礼
分かりやすいご説明本当に感謝いたします! 無知なりにもできるとワクワクしますねw ほんとにありがとうございます!