Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


21932 / 76734 ←次へ | 前へ→

【60188】Re:数字キーだけで,セルに数値を入力
発言  kanabun  - 09/2/3(火) 10:02 -

引用なし
パスワード
   ▼いちご さん:
おはようございます。朝が早いんですね(^^

> ここで,また,新しい課題ができてしまいました。
>ファイルを開いたと時に,セルを指定してすぐに入力待ちにして,
>1〜5の数字を順に入力していくことはできたのですが,2番目の
>質問項目に移すのにどうしてよいかわかりません。
> もちろん,マウスで,新しく入力するセルをクリックすればよい
>のですが,マクロでしたいと思っています。

> また,テキストボックスをアクティブにして,入力待ちの状態を
>解除する方法は,ないものでしょうか。Escキーを押すことで,セル
>がアクティブになり,文字列を入力することはできるのですが,入
>力後,すぐに,テキストボックスが,アクティブになるので,文字
>列を入力しようとするたびに,Escキーを押さなければなりません。
> セルがアクティブになっているモードとテキストボックスがアク
>ティブになっているモードが,切り替えられると,ありがたいと思
>っています。よろしくお願いします。

とりあえず、後半のご質問の件ですが、
従来のコードを以下のようにしてみてください。
モジュール内でどのプロシージャからも参照できる変数 BoxMode を
追加し、これを「TextBox入力モード」のとき ON、セル入力モードのとき
OFF とするようにします。
どこで切り替えるかというと、TextBoxにFocusが当たったときとFocusを
失ったとき(TextBoxで[ESC]を押したときとか、セルをマウスで選択したとき
このイベントが発生します)とします。
また、選択セルが移動したとき、これまでは無条件に TextBoxをActivate
していましたが、これも、「Box入力モードがONのとき」だけと条件をつけます。

'------------------------------------ シートモジュール
Option Explicit

Private BoxMode As Boolean     '★追加

Private Sub TextBox1_Change()
 Dim i As Long
 
 With TextBox1
   If Len(.Text) = 0 Then Exit Sub
   i = Val(.Text)
   Select Case i
    Case 1 To 5
      With ActiveCell
        .Value = i
        .Offset(1).Select
      End With
    Case Else
      Beep           '★任意追加
   End Select
   .Text = ""
   .Activate
 End With
End Sub

Private Sub TextBox1_GotFocus()    '★追加
  TextBox1.BackColor = vbYellow
  BoxMode = True
End Sub

Private Sub TextBox1_LostFocus()   '★追加
  TextBox1.BackColor = vbWhite
  BoxMode = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With TextBox1
   .Left = Target.Left
   .Top = Target.Top
   If BoxMode Then .Activate      '★変更
 End With
End Sub

------------------
さて、前半の
セルの移動をマクロから制御したいとか、
セルが移動したとき、セル入力モードの範囲だったら、テキストボックス
からセルにフォーカスを移動するなどの処理は、
やってできないことではないかと思うのですが、
こちらではシートのレイアウトが分からないので無理な相談です。
いちど 数字1文字入力範囲と そうでない入力範囲がどのようになっている
のか(おそらく共通の特徴があると思いますから)整理してみてください。
たぶん、n行目まで1文字(数字)を入力した後は、文字列を入力し、その後
次の列の m行目に移動して、 同じことを繰り返す。。。
などという法則があるのではないかと思います。
2 hits

【60174】数字キーだけで,セルに数値を入力 いちご 09/2/1(日) 20:57 質問
【60175】Re:数字キーだけで,セルに数値を入力 kanabun 09/2/2(月) 0:13 発言
【60185】Re:数字キーだけで,セルに数値を入力 いちご 09/2/2(月) 20:30 お礼
【60186】Re:数字キーだけで,セルに数値を入力 kanabun 09/2/2(月) 20:42 発言
【60187】Re:数字キーだけで,セルに数値を入力 いちご 09/2/3(火) 4:18 お礼
【60188】Re:数字キーだけで,セルに数値を入力 kanabun 09/2/3(火) 10:02 発言
【60197】Re:数字キーだけで,セルに数値を入力 いちご 09/2/3(火) 20:44 質問
【60199】Re:数字キーだけで,セルに数値を入力 kanabun 09/2/4(水) 0:40 発言
【60217】Re:数字キーだけで,セルに数値を入力 いちご 09/2/4(水) 21:20 お礼
【60218】Re:数字キーだけで,セルに数値を入力 kanabun 09/2/4(水) 21:46 発言
【60246】Re:数字キーだけで,セルに数値を入力 いちご 09/2/5(木) 20:04 お礼

21932 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free