• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エラー13 型が一致しません)

エラー13 型が一致しません

このQ&Aのポイント
  • 氏名を入力するとフリガナが自動的に表示されますが、入力しないままフリガナに移動すると「エラー13 型が一致しません」というエラーが表示されます。
  • 修正しやすいように、フリガナを出した後にカーソルをフリガナの最後に移動する処理を追加しましたが、何も入力せずにフリガナに移動するとエラーが発生します。
  • 「エラー13 型が一致しません」というエラーを回避する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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

yakumo6969
質問者

お礼

分かりやすいご説明本当に感謝いたします! 無知なりにもできるとワクワクしますねw ほんとにありがとうございます!

その他の回答 (1)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

Len関数は、引数(ご質問の場合では「.Value」)がNull(空白)の時には 文字数(数値)ではなくNullが返されるため、数値しか受け取れない SelStartに代入しようとしたところで「型が一致しません」というエラーに なったものと思います。 対策としては、Nullを他の値に変換するNz関数を使用します。 (現在) .SelStart = Len(.Value)  (変更後) .SelStart = Nz(Len(.Value),0) Nz関数の1番目の引数がNullの場合は、2番目の引数の値がNullの代わりに 使用されます。 これで、ご質問のエラーは発生しなくなると思います。

yakumo6969
質問者

お礼

ご返答ありがとうございます! その方法でまったくその通りになりました!本当にありがとうございます! できればエラーが発生せず、該当の住所はありませんみたいなメッセージだけを出して、そのままOKして抜け出せる感じでやりたいのですが。

関連するQ&A