Subject: 1桁数字を1個のセルに入力するときにリターンキーを押さないで入力する方法 ======================================== From: まさお Date: 2001/02/07(水) 18:48:16 1つの数字を1つのセルに入力するときにリターンキーを押さないで入力する方法をご存知でしたら教えてください。たとえば10桁のコード数字を10個のセルに1桁づつリターンキーを入力するのは面倒なので1つの数字を打ち込んだらリターンキー押さないでも、右隣のセルに移動させたいと思っているのですが、無理でしょうか。 ======================================== From: しんしん Date: 2001/02/07(水) 20:30:35 こんばんわ。 リターンキー(enter)の代わりに →キー か Tabキー じゃだめなんでしょうか? 絶対に何もキーを押さずに ということなら おそらく VBAで可能だと思います。 話が違いますが。。。。 10桁の数値を10セルに分けて入れたいなら 逆に 1つにセルに 10桁のコードをつづけて入れても 関数を使って 別セルに 1桁づづ取り出す方法もありますよ。 ======================================== From: よろずや E-Mail: kin_chan@wine.plala.or.jp Date: 2001/02/07(水) 22:46:57 セルに入力してる最中は、マクロは動きません。 ======================================== From: 高校中退 Date: 2001/02/08(木) 06:09:07 しんしんはん、惜しいでっせ! 後半は正解! VBA のイベントタイミングがちょっと理解不足だったね。 がんば、がんば。 ======================================== From: まさお Date: 2001/02/08(木) 11:23:03 Solved: on しんしんさん、よろずやさん、高校中退さん、貴重なアドバイスありがとうございました。やはり、しんしんさんのアドバイス通りに、1つにセルに 10桁のコードを入力することにし、関数で1つの文字を取出しコードをチェックすることが自然だと思いますので、そのようにすることにしたいと思います。 ======================================== From: わらびし Date: 2001/02/08(木) 16:29:43 こんにちは。 Excel 97 以降ならできないことはありません。 1・当該シートに下記のイベントマクロを書きます。 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Application.OnKey "1", "nextrow1" Application.OnKey "2", "nextrow2" Application.OnKey "3", "nextrow3" Application.OnKey "4", "nextrow4" Application.OnKey "5", "nextrow5" Application.OnKey "6", "nextrow6" Application.OnKey "7", "nextrow7" Application.OnKey "8", "nextrow8" Application.OnKey "9", "nextrow9" Application.OnKey "0", "nextrow0" End Sub 2.標準モジュールシートに下記のコードを書きます。 Option Explicit Sub nextrow1() Cells(ActiveCell.Row, ActiveCell.Column) = "1" If ActiveCell.Column = 256 Then Beep: Exit Sub Cells(ActiveCell.Row, ActiveCell.Column + 1).Select End Sub Sub nextrow2() Cells(ActiveCell.Row, ActiveCell.Column) = "2" If ActiveCell.Column = 256 Then Beep: Exit Sub Cells(ActiveCell.Row, ActiveCell.Column + 1).Select End Sub (中略) Sub nextrow0() Cells(ActiveCell.Row, ActiveCell.Column) = "0" If ActiveCell.Column = 256 Then Beep: Exit Sub Cells(ActiveCell.Row, ActiveCell.Column + 1).Select End Sub "手錬" の方だったら、もっとスマートなコードになると思いますが。 ======================================== From: まさお Date: 2001/02/09(金) 11:53:16 わらびしさん、ありがとうございます。 Excel2000を使用していますので、さっそく試してみましたが、マクロの動かし方がよくわかりません。こちらでした作業は、Alt+F11で、VISUAL BASIC EDITORで(GENERAL)の画面にて、わらびしさんのコードをコピーして貼り付けましたが、数字を押しても、右に移動しませんでした。ご教示よろしくお願いします。 ======================================== From: わらびし Date: 2001/02/09(金) 12:16:52 こんにちは。 上のコードで、1.の方と2.の方では貼り付ける場所が違います。 1.はシートに付随したイベント・マクロなので、該当するシートのイベント・マクロ用の場所に貼り付けます。 具体的には・・・ (1)Excel を起動し、該当するファイルを開きます。 (2)メニューバーで [ツール]−[マクロ]−[Visual Basic Editor]として VB Editor を起動します。 (3)VB Editor のメニューで、[表示]−[プロジェクト エクスプローラ]とします。 (すでに開いているかもしれません) (4)エクスプローラの中で該当するシート名をダブルクリックすると、そのシート用のイベント・マクロ用のシートが開きます。 上記 1.のコードはその中に書き込みます。 コピー&ペーストの際に、マクロ名(Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) )や End Sub がダブらないようにしましょう。 2.は VB Editor のメニューで[挿入]−[標準モジュール]とし、そこで開いたシートに書き込みます。 ======================================== From: まさお Date: 2001/02/09(金) 14:04:31 わらびしさん、さっそくのご教示ありがとうございます。 試しましたところ、完璧に動きました。感激です!!。イベントマクロのことを初めて知りました。勉強になりました。本当にありがとうございました。