![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Private Sub 招待者氏名_AfterUpdate()
With Me!招待者フリガナ
'住所にフォーカスを移動
.SetFocus
'カーソルを最後に移動
.SelStart = Len(.Value)
End With
End Sub
氏名を入れたらフリガナを自動で出しています。
変換しづらい名前を入力する際、一文字ずつ打った後フリガナを手動で修正しています。
「祭子」を「まつりこ」で変換し、フリガナを「サイコ」に修正するなど。
修正しやすいように、フリガナを出したあと、
カーソルをフリガナの最後に移動するようにしました。
そこまではうまくいったのですが、氏名になにも入力をせずに
フリガナに移動したら、「エラー13 型が一致しません」とでます。
これを回避、抜け出す方法を教えていただきたいのですが。
宜しくお願いいたします。
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
No.1
- 回答日時:
Len関数は、引数(ご質問の場合では「.Value」)がNull(空白)の時には
文字数(数値)ではなくNullが返されるため、数値しか受け取れない
SelStartに代入しようとしたところで「型が一致しません」というエラーに
なったものと思います。
対策としては、Nullを他の値に変換するNz関数を使用します。
(現在)
.SelStart = Len(.Value)
(変更後)
.SelStart = Nz(Len(.Value),0)
Nz関数の1番目の引数がNullの場合は、2番目の引数の値がNullの代わりに
使用されます。
これで、ご質問のエラーは発生しなくなると思います。
ご返答ありがとうございます!
その方法でまったくその通りになりました!本当にありがとうございます!
できればエラーが発生せず、該当の住所はありませんみたいなメッセージだけを出して、そのままOKして抜け出せる感じでやりたいのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- 戸籍・住民票・身分証明書 ご自分の氏名のフリガナを変えたい、と思ったことはありますか。 6 2023/02/04 07:51
- その他(結婚) 名前変更手続きについてです。 来年に結婚が決まり、相手側の名字になります。 それと共にキラキラ寄りな 1 2023/06/02 03:39
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Excel(エクセル) Excelへのデータ入力作業 4 2023/07/01 18:21
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLserver2005 nvarchar を flo...
-
空白はダメというエラーの表示...
-
#1062 - '0' は索引 'PRIMARY' ...
-
AccessVBA 実行時エラー'2766'...
-
ADODBを使用してRecodesetでFie...
-
ビープ音の消し方
-
UPDATEを使ったSQL文にて
-
ACCESSでエラー時に再起動する方法
-
SQL エラー コードの一覧 につ...
-
PL/SQL ORA-06502エラーに関し...
-
オラクルでisnumeric?
-
EXP時のSELECT句
-
ODBCデータソースが削除できま...
-
FETCHエラー(オラクル)
-
エラー13 型が一致しません
-
(素人の質問) SQL Server エ...
-
Access2010実行時エラー-21473525
-
Access 実行時エラー'3075' 対...
-
JOINのネスト制限?
-
SQL*Loaderで「オブジェクトが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
アクセスでエラー このフィー...
-
列名に変数を使うことはできな...
-
実行時エラー459 withステート...
-
SQLserver2005 nvarchar を flo...
-
空白はダメというエラーの表示...
-
AccessVBA 実行時エラー'2766'...
-
オラクル(PL/SQL)のエラー
-
SQL*Loaderで「オブジェクトが...
-
UPDATEを使ったSQL文にて
-
SQLCODE=-420とはどういうエラ...
-
(素人の質問) SQL Server エ...
-
Access2010実行時エラー-21473525
-
SQL文長の制限
-
Access 実行時エラー'3075' 対...
-
SQL エラー コードの一覧 につ...
-
DocuWorksでの印刷
-
「1004:アプリケーション定義...
-
ORACLE PL/SQLの...
-
オラクルでisnumeric?
おすすめ情報