- ベストアンサー
Excelで簡単入力
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
エクセルにはセルのクリックイベントはないので ダブルクリックイベントを使います。 シートモジュールに記述します。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'A1セル以外が変更されたら何もしない If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Cancel = True Select Case Target.Value Case "" Target.Value = "○" Case "○" Target.Value = "△" Case "△" Target.Value = "無し" Case "無し" Target.Value = "○" End Select End Sub
その他の回答 (6)
- marbin
- ベストアンサー率27% (636/2290)
クラスを使えば出来るのかもしれませんが、簡単な シートの"擬似"クリックイベント?の作成方法です。 コントロールツールボックスのラベルを使った方法です。 コントロールツールボックスのラベルを配置し、 Altキーを押しながら枠をドラッグしセルにぴったり合わせる プロパティ BackStyle:0-fmBackStyleTransparent '透明になる Caption:ブランク 'キャプションは入れない クリックイベントに処理を記述 Private Sub Label1_Click() With Me.Label1.TopLeftCell .Value = .Value + 1 End With End Sub これでセルの擬似クリックイベントの完成です。 ただし、本来のワークシートのイベントよりも 動作は遅くなると思います。 (イベント起動は早いが、ラベルでセルが隠される時間が長い) シェイプを使った方法です。 シェイプを配置し↓のマクロを登録したらコントロールツールボックス の場合よりも速くなるようです。 シェイプの書式設定で塗りつぶしを透明にしておきます。 Sub test() With ActiveSheet.Shapes(Application.Caller).TopLeftCell .Value = .Value + 1 End With End Sub
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
VBAになります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 Or Target.Row = 5 Or Target.Address = "$D$4" Or Target.Address = "$E$7" Then Select Case Target.Value Case "" Target.Value = "○" Case "○" Target.Value = "△" Case "△" Target.Value = "無し" Case "無し" Target.Value = "○" End Select Range("A1").Activate End If End Sub 「無し」とは文字で「無し」と解釈しています。(No4さんを参考にした) クリックイベントあります。SelectionChangeです。 ただし、クリックしてある上からクリックしてもイベントが発生しませんので、対象のセルをクリックしたら変化させた後に「A1セル」にフォーカスを戻しています。 サンプルでは、C列全部、5行目全部、D4セル、E7セル をクリックしたら変化するようにしています。 実情に合わせて変更して下さい。 ではでは。
お礼
詳しく書いて頂きありがとうございます。 先の方と似ていますね。 まさにこんな感じだったと思います。 これを参考に早速試してみます!!
- macinspire
- ベストアンサー率39% (235/600)
「入力規則」を使うと、アンケート用紙は簡単にできますが、集計が面倒になるんですよね。。。 ちょっと高度ですが「フォーム」を使ってはいかがでしょう? 選択肢をクリックで選べ、選んだ項目を上から順に1、2、3の値へと変換してくれます。 割合を出すような集計が、エクセルで行いやすくなります。 フォームはツールバーを右クリックして出すか、Office2007では「開発」ツールバーから呼び出せます。
お礼
なるほど! フォームというものもあるんですね。 確かに変換すると集計の時に楽そうです。 それも検討してみたいと思います。 ありがとうございました。
- web2525
- ベストアンサー率42% (1219/2850)
マクロなら目的のセルの上に作図で四角でも貼り付けて Sub オブジェクト_Click() If Range("a6") = "" Then Range("a6") = "○" Else If Range("a6") = "○" Then Range("a6") = "△" Else If Range("a6") = "△" Then Range("a6") = "" End If End If End If End Sub こんな形で、貼り付けた四角にマクロ登録すれば出来ます。
お礼
これはボタン等に登録するためのマクロでしょうか? 私が以前見たのは、何も入力されていないセルをクリックするだけで 直接記号が入力できるというものでした。 だからVBAの中で、この範囲内でクリックすれば記号が入力できる という”範囲指定”があったような記憶が…。 でもこれはこれで便利ですね! また何かで使ってみたいと思います。 ありがとうございました。
- gyouda1114
- ベストアンサー率37% (499/1320)
入力規則のリストで エクセル2003の場合 設定するセルを選択 → データ → 入力規則 → 「設定タブ 」→ 入力値の種類を「リスト」 → 元の値に「〇,△,無し」 → OK 画像を参照
お礼
画像まで付けて頂いてありがとうございます。 このサイトいつの間にか画像貼り付けられるようになったんですね。 せっかくですが、入力規則はもうすでに設定しています。 毎回プルダウンメニューから選ぶのでは手間が掛かり過ぎるので、 もっと楽に入力できるようにできないかなと考えています。 そこで思い出したのが以前何かで見たクリックするだけで 指定した文字や記号が入力できるようにするマクロです。 どこで見たのか忘れてしまって、皆さんのお力をお借りしようかと…(^^;
- n-jun
- ベストアンサー率33% (959/2873)
入力規則のリストではダメなのでしょうか。 既に検討済ならスル~して下さい。
お礼
ご回答ありがとうございます。 残念ですが、入力規則ではダメなんです。 毎回プルダウンメニューから選んでいては手間が掛かり過ぎる為、 もっと楽にしたいと思い、今回質問させて頂きました。 質問にも書きました通り、ワンクリックするだけで「○」や「△」、「(文字消去)」が 順に切り替えられると、たくさんある入力がかなり楽になります。 ちなみに入力規則は現在すでに設定しています(^^;
関連するQ&A
- Excelのフォームを閉じる方法
ExcelのVBA を勉強し始めた初心者です。 Excelでシートにデータを入力していく為に、フォームを作りました。 そこで、コマンドボタンをクリックして、フォームを閉じるようにするには、どういった記述をすればいいのでしょう? バージョンは2002です。 お願いします。
- ベストアンサー
- オフィス系ソフト
- EXCELの入力について
EXCELの入力で教えてほしいことがあります。 セルに"○"か、それ以外かを入力したいのですが、 現在は、リストで"○"か"×"を選ぶかたちにしています。 もっと簡単な入力をしたいと思っています。 セルをダブルクリックするだけで、"○"が入力でき、 VBAなどではなく、簡単にできると聞いたのですが、 知っている方がおりましたら教えてください。 お願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルのVBAで教えてください
エクセルのVBAで教えてください、セルA1の値をマクロボタンを押すたびに、セルC1から順番にC2・C3・C4・・・・と下に自動的に入力するVBAを教えてください。
- ベストアンサー
- Visual Basic
- エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされて
エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされてしまう VBAマクロ初心者です。 エクセルVBAマクロで、以下の様なプログラムを作成し計算させていますが、 一度入力した値がテキストポックスに残ってしまい、なんとかならないかなと 思っています。 (1)複数シートにそれぞれコマンドボタンを配置し、クリックすると同じユーザー フォームが立ち上がるようになっています。 (2)そのユーザーフォーム内に、テキストボックスが複数あり、それぞれ値を入力 して計算スタートさせると、ワークシートの1行目から数千行目まで計算して 各行に計算結果を表示します。 (計算は、既に各行に入力済みのデータとこのテキストボックスの値を元に算出されます) (3)次に、別のシートでコマンドボタンをクリックし、ユーザーフォームを立ち上げると、 前のシートで入力した値がそのまま各テキストボックスに入ってしまいます。 (これは、必ず起こる訳ではなく、時々起こるのですが、起こる場合は、コマンドボタン をクリックしてからユーザーフォームが立ち上がるまでの時間が若干短い感じがします) ※一度、上記の計算をさせるとテキストボックスの値がそのシートの特定のセルに入り、 次回ユーザーフォームを立ち上げた際に、テキストボックスに入るようになっています。 (Private Sub UserForm Initialize を使っています) パソコンの構造を、私はよく知らないのですが、おそらく、一度テキストボックスに値 を入力して計算させると、どこかのメモリにそれが残っていて、次にユーザーフォーム を立ち上げた際にそれが入ってしまうのかな、と思っています。 (ただし、もし前の値が入ってしまったとしても、一度そのユーザーフォームを消して から、再度立ち上げると、正常な値(そのシートの特定のセルを参照)が必ず入ります) 何か、プログラムにより、このメモリ?を消す?、あるいはうまく解決する方法など 考えられませんでしょうか? もし、詳しい方がおられましたら、御教示いただけませんでしょうか。 よろしくお願いいたします。
- 締切済み
- Visual Basic
- エクセルで特定のセルに入力後エンターを押すとマクロが起動
エクセルで特定のセルに入力後エンターを押すとマクロが起動 エクセルで、ファームで作成したボタンを押すとマクロが起動するように して有ります。 記憶させたマクロの起動にはファームで作成したボタンを右クリックし 「マクロの登録」でモジュールを登録する方法しか知りません。 これを特定のセルにデータを入力後エンターを押して入力値が確定されたら このマクロが起動するようにするにはどうすればいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA シート内の特定のセルに値が入…
EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム EXCELシート内の特定のセルに値が入力された際に処理を実行するプログラムをEXCEL VBAで作成したいと考えています。 EXCELに計測データを取込み、このデータが設定値以外の場合のみ、トリガーを出す様なイメージで使いたいと思います。 どの様に考えれば良いでしょうか?サンプル等ありましたら紹介ください。 上記質問の”トリガー”について補足します。 あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。 単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作したいという意味です。。
- ベストアンサー
- 開発
- エクセルで入力文字のチェック
エクセルのセルに入力された値がUnicodeで****から****までの範囲内のみの文字で記述されているかのチェックをしたいのですが、 例:B3には電話番号を入力したいので半角数字と()のみで構成されているかをチェックする。 VBAでどのように記述すればよいのでしょうか? もう一つ、 セルB3に文字を入力し終えた時または、B3にあるカーソルを他のセルに動かした時に VBAが走る…と言う記述方法はあるのでしょうか? ボタンを用意し、入力後[CHECK]を押すとVBAが動くと言うのは出来るのですが… 以上よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
ご回答ありがとうございます。 まさにこんな感じだったような気がします! ただ、確か範囲指定があったので、 指定した範囲内でできるみたいなものでした。 その場合はどのように指定したらいいんでしょうか?