- 締切済み
マクロ無しでデータを入力するんですけど
EXCELで入力をしていくのですけれどいちいちセルをマウスで指定せずに決まったセルに飛んで入力したいのです。(アンケート入力です) ページにフォームを作って、入力する場所を作り、そこにデータを入力してENTERキーを押すとつぎに入力するべきセルに移るようにしたいのです。 でも、マクロを使うわけでもなさそうなので使わずに出来ないでしょうか? 何か機能があるはずなのですけれど思いつきません。どうか教えてください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
ご回答の皆さんがVBAでの回答になっているので、出そうか出すまいか迷ったのですが、VBA色を極力少なくして下記解答を挙げます。 質問者の場合に合わせて、質問者側でチューンニングしていただけるかどうか。 (1)シート上にフォームを作るために、フォームを作る方法 (A)ツール-マクロ-VisualBasicEditor (B)挿入-ユーザーフォーム (2)フォーム上にコントロール(ラベルとテキストボックスとコマンドボ タン)を貼りつける方法 (A)ラベルとテキストボックスはラベル左、テキスト右の対に配置する (B)コマンドボタンは1つで良い。 (C)ラベルとコマンドボタンの表示文言は、プロパティのCaptionを 変える。ラベルはそれぞれの「項目名」に、コマンドボタンは 「登録」とかにする (D)プロパティのControlSourceには、項目の数だけの、空いた列の第1行目を 指定する。K1,L1,M1、・・など。 (3)下記コーディングをコピペする。 (A)貼りつけたコマンドボタンをダブルクリックする。 (B)Private Sub CommandButton1_Click() End Subが出る。 (C)その真中に下記をコピペする。 d = Range("a1").CurrentRegion.Rows.Count n = UserForm1.Controls.Count For i = 1 To n - 1 Cells(d + 1, i) = Cells(1, 9 + i) Next i (D)2の(D)で指定したControlSourceが11列(K列) から始まるなら、10+iのようにする。 (4)使い方---実行をクリックする。 各テキストボックスにデータを入れて、コマンドボタンをクリック すると、ワークシートの最下行の次行にデータがセットされる。 (5)終了はフォームの右上Xをクリック (6)Tabキーで移る順序は、プロパティのTabindexに0、1,2、・・ を設定すれば自由になる。ただし、項目の上下が普通入力の前後順序を決める。 (7)そのテキストボックスに来た時、半角数字、ひらがなモードにするなどの設定は、各々のテキストボックスのプロパティのIMEmodeを設定すれば自由になる。
- takayuki51
- ベストアンサー率47% (18/38)
この場合は、ユーザーフォームを作成するのが一番と思います。 ツールメニューより マクロ>Visual Bacic Editor を選択する Visual Bacic Editorのツールメニューより 挿入>ユーザーフォーム を選択する。 これでひな形ができますから、ボタンなどを配置し動作設定を書き込めばできます。 その後、ワークシート上にフォームの表示・非表示のボタンなどを設置する。 敷居は少し高いですが、がんばってください。
- imogasi
- ベストアンサー率27% (4737/17070)
#2の続き (1)質問者の考えていることは ・セル(カーソル)が自動的に移る ・入力する ・データがセットされる。 ですが、次ぎのカーソルを決めるのはどうするのですか。 なにか規則性でもあるのですか。なければ次ぎに行くことが出来ません。。 (2)とくに、第2枚目、第3枚目のアンケートのデータを記録するセルはどこになりますか。具体例を挙げて見てください。 (3)普通は ・アンケート1枚分の入力場所はフォーム上に固定する。 ・データベース(ワークシートなど)にセットする時に プログラムでコントロールする(場所を決める)。 ・第2枚目以降は順次次行に進む。 ように思います。 VBAマクロ無しに、タブで移ると、決めた右端列を越えると、次行A列に移すことはできるので、それを望んでいるのですか。
補足
((+_+))、なんと言って良いやら。質問自体分かりにくいですね。 タブで移るとジャンプできたりするのですか?ぜひその方法も聞きたいです。 範囲を指定しておくとその中でデータ入力ができる方法は分かるのですが。 私が言いたい事はひとつのデータを一通り書き終えたらそれをマクロを使って 別のページに一行に書き込み、そして、書いたデータは消し、新たに データを書き込めるようにしたいのです。・・・で分かります? 書き込む場所は上から順に改行キーでその場所にジャンプしていくよう 設定したいのです。 うーん、うまく説明ができないな。 てなわけでよろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17070)
エクセル2000までは、第1行目に項目見出しを入力し、データ-フォームをクリックするしか、やや質問に近い機能はないのでは。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
マクロ以外でできるのかな? フリーのアドインプログラムがあったはずですが、それも失念。vectorで探してみてください。 でも マクロなら作ったことあります。 Sub Lock_Data() ' ' Lock_Data Macro Selection.Locked = False Selection.FormulaHidden = False Application.MoveAfterReturnDirection = xlToRight ActiveSheet.EnableSelection = xlUnlockedCells ActiveSheet.Protect userinterfaceonly:=True Application.StatusBar = "★データ入力中・・・★" End Sub Sub unlock_Data() activesheet.Unprotect Cells.Locked = True Application.MoveAfterReturnDirection = xlDown Application.StatusBar = False End Sub ボタン1にLock_Dataを設定し、ボタン2にはunlock_Dataを設定します。 入力範囲をCtrlボタンを押しながら選択し、選択が終わったらボタン1をクリックすると、入力範囲が特定されます。その解除にボタン2を使います。
お礼
ありがとうございます。確かにユーザーフォームから入りました。 でも、まだまだ技術不足のせいかメッセージボックスを出せず、しまえず、 なかなか使いにくい面もあり、私には使いこなせませんでした。残念。 でも、これはもっと勉強すれば使えそうですね。がんばってみます。 私としてはユーザーフォームを使わないで直接エクセルの画面に書き込みたかったのですが・・・・やはりマクロを使わないと無理なのでしょうか・・・ でも、ユーザーフォームを使用して入力する方法もこれから利用していきたいと思うのでがんばります。 貴重な回答、ありがとうございました。