|
▼いちご さん:
こんばんは。
> 数字キーで使って,セルに数値を入力したいと思っています。
> このとき,数字キー後にEnterキーするのが普通なのですが,
> Enterキーを押さずに,入力できればと思っています。
> 入力後,セルを下に移動して,次の値を入れられるようになると,
> 入力にかかる時間が短縮できるのでなないかと思っています。
> また,文字入力をしなければならない項目もあるので,
> 入力モードが切り替えられるといいと思っています。
> こしたことは,無理なのでしょうか?
いい案が出るまでのつなぎですが、よろしければこんな方法
試してみてください。
対象シートに コントロールツールボックス から
TextBoxをひとつシートに貼り付け、高さをだいたいセルと同じ高さに、
また 横幅を高さと同じくらいにします。
(TextBoxのBackColor は 黄色とか 目立つ色の方がいいかもしれません)
そのTextBoxを右クリックするとメニューが出てきます。
メニューの「コードの表示」を選ぶと、
Private Sub TextBox1_Change()
End Sub
というプロシージャが作られますから、このなかに以下のコードを
コピーして、
--------------
Option Explicit '変数の宣言を強制する (この宣言は自動で入らなければ
VBEメニューの[ツール]-[オプション]-[編集]で、入るようにチェックを
いれておいてください。)
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
End Select
.Text = ""
.Activate
End With
End Sub
また、コードウィンドウの左上のドロップダウンから
Worksheet
を選ぶと、↓のプロシージャが出来ますから、
そこに下のコードをコピペしてみてください。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With TextBox1
.Left = Target.Left
.Top = Target.Top
End With
End Sub
-----------
以上2つのシートプロシージャが書き終わったら、
VBEメニューの「デバッグ」-「VBAプロジェクトのコンパイル」で
構文チェックをしてください。エラーがでたら、修正します。
無事コンパイルが終わったら、シートに戻って(デザインモードを
終了し)最初の入力セルを選択してください。
このとき、TextBoxがそのセルの左側に移動するはずです。
最初だけは、TextBoxをマウスでActiveにしてから、
数字の 1〜5 を入力してください。
数字1文字を入れるとその数字がセルに転記され、ActiveCellが
1つ下に移動すれば成功です。
> また,文字入力をしなければならない項目もあるので
そのときは、セルのほうへ直接入力してください。
ま、一案ということで。
では(^^
|
|