VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/07/26(Tue) 10:09
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: マクロだけでフォーカス移動

前後の文章から、Microsoft Access 上の開発と仮定して回答します。

> テキストボックスへの入力が正しくなければ、
> そのテキストボックスにフォーカスを移動させたいのですが、
> マクロだけで、出来るでしょうか?

Accessの場合、「正しくなければ、フォーカスを移動させる」のではなく、
「正しくなければ、フォーカスを脱出できないようにする」のが一般的です。

たとえば、テキストボックスの[更新処理前]イベントを使って、

  Private Sub TextBox1_BeforeUpdate(Cancel As Integer)
    If IsDate(TextBox1.Value) = False Then
      MsgBox "日付を入力してください", vbExclamation
      Cancel = True
    End If
  End Sub

のように記述すると、日付を入力するまで、テキストボックスを脱出できなくなります。
(正しい日付を入力するか、Escキーを押して入力処理をキャンセルすれば、フォーカス移動可能)

# VB6でいうところの、Validateイベントに近い機能です。


上記機能を使うのではなく、やはり、フォーカス移動自体が必要な場合には、
    「コントロールの移動」
の マクロ を使うか、または、
    DoCmd.GoToControl "TextBox1"
あるいは、
    TextBox1.SetFocus
のいずれかの VBA を使う事になります。

ただし、いずれのコードを使うにしても、そのコントロールがフォーカスを受け取れる状態に
なっていなければ、エラーが発生します。

このエラーを無視したい場合には、VBAでは、直前に「On Error Resume Next」ステートメントを
記述しておけば OK です。一方、マクロによる記述の場合は、同等機能が無い(?)ので、
マクロ条件式を使って、フォーカスが受け取れるかどうかの判定を行う必要があります。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -