• ベストアンサー

Excelで簡単入力

仕事で使っているExcelのアンケートフォームに簡単に入力できるようにする為、 特定のセルをクリックするごとに「○→△→無し」と 順番に繰り返し切り替えられるマクロを作りたいと思っています。 ですが、記述をどのようにしたらいいのかよくわかりません。 どなたかExcelやVBAに詳しい方教えて頂けませんでしょうか? 参考になるサンプルやそのままに近い記述が載っているサイト等があれば、 よりわかりやすいのですが。 よろしくお願いします。

  • ylovem
  • お礼率82% (161/194)

質問者が選んだベストアンサー

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

エクセルにはセルのクリックイベントはないので ダブルクリックイベントを使います。 シートモジュールに記述します。 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

ylovem
質問者

お礼

ご回答ありがとうございます。 まさにこんな感じだったような気がします! ただ、確か範囲指定があったので、 指定した範囲内でできるみたいなものでした。 その場合はどのように指定したらいいんでしょうか?

その他の回答 (6)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.7

クラスを使えば出来るのかもしれませんが、簡単な シートの"擬似"クリックイベント?の作成方法です。 コントロールツールボックスのラベルを使った方法です。 コントロールツールボックスのラベルを配置し、 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

回答No.6

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セル をクリックしたら変化するようにしています。 実情に合わせて変更して下さい。 ではでは。

ylovem
質問者

お礼

詳しく書いて頂きありがとうございます。 先の方と似ていますね。 まさにこんな感じだったと思います。 これを参考に早速試してみます!!

回答No.5

「入力規則」を使うと、アンケート用紙は簡単にできますが、集計が面倒になるんですよね。。。 ちょっと高度ですが「フォーム」を使ってはいかがでしょう? 選択肢をクリックで選べ、選んだ項目を上から順に1、2、3の値へと変換してくれます。 割合を出すような集計が、エクセルで行いやすくなります。 フォームはツールバーを右クリックして出すか、Office2007では「開発」ツールバーから呼び出せます。

ylovem
質問者

お礼

なるほど! フォームというものもあるんですね。 確かに変換すると集計の時に楽そうです。 それも検討してみたいと思います。 ありがとうございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

マクロなら目的のセルの上に作図で四角でも貼り付けて 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 こんな形で、貼り付けた四角にマクロ登録すれば出来ます。

ylovem
質問者

お礼

これはボタン等に登録するためのマクロでしょうか? 私が以前見たのは、何も入力されていないセルをクリックするだけで 直接記号が入力できるというものでした。 だからVBAの中で、この範囲内でクリックすれば記号が入力できる という”範囲指定”があったような記憶が…。 でもこれはこれで便利ですね! また何かで使ってみたいと思います。 ありがとうございました。

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.2

入力規則のリストで エクセル2003の場合 設定するセルを選択 → データ → 入力規則 → 「設定タブ 」→ 入力値の種類を「リスト」 → 元の値に「〇,△,無し」 → OK 画像を参照

ylovem
質問者

お礼

画像まで付けて頂いてありがとうございます。 このサイトいつの間にか画像貼り付けられるようになったんですね。 せっかくですが、入力規則はもうすでに設定しています。 毎回プルダウンメニューから選ぶのでは手間が掛かり過ぎるので、 もっと楽に入力できるようにできないかなと考えています。 そこで思い出したのが以前何かで見たクリックするだけで 指定した文字や記号が入力できるようにするマクロです。 どこで見たのか忘れてしまって、皆さんのお力をお借りしようかと…(^^;

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

入力規則のリストではダメなのでしょうか。 既に検討済ならスル~して下さい。

ylovem
質問者

お礼

ご回答ありがとうございます。 残念ですが、入力規則ではダメなんです。 毎回プルダウンメニューから選んでいては手間が掛かり過ぎる為、 もっと楽にしたいと思い、今回質問させて頂きました。 質問にも書きました通り、ワンクリックするだけで「○」や「△」、「(文字消去)」が 順に切り替えられると、たくさんある入力がかなり楽になります。 ちなみに入力規則は現在すでに設定しています(^^;

関連するQ&A

  • エクセル VBA

    エクセル VBA セルA1に ”□はい □いいえ”とあり それをダブルクリックすると ?フォームが表示されチェックしますか?と聞きOKなら ■ はい となり   次に続けて ?フォームが表示されチェックしますか?と聞きOKなら ■いいえ となるような マクロの記述は出来るのでしょうか? すいません! 教えてください。

  • Excelのフォームを閉じる方法

    ExcelのVBA を勉強し始めた初心者です。 Excelでシートにデータを入力していく為に、フォームを作りました。 そこで、コマンドボタンをクリックして、フォームを閉じるようにするには、どういった記述をすればいいのでしょう? バージョンは2002です。 お願いします。

  • EXCELの入力について

    EXCELの入力で教えてほしいことがあります。 セルに"○"か、それ以外かを入力したいのですが、 現在は、リストで"○"か"×"を選ぶかたちにしています。 もっと簡単な入力をしたいと思っています。 セルをダブルクリックするだけで、"○"が入力でき、 VBAなどではなく、簡単にできると聞いたのですが、 知っている方がおりましたら教えてください。 お願いします。

  • エクセルのVBAで教えてください

    エクセルのVBAで教えてください、セルA1の値をマクロボタンを押すたびに、セルC1から順番にC2・C3・C4・・・・と下に自動的に入力するVBAを教えてください。

  • エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされて

    エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされてしまう VBAマクロ初心者です。 エクセルVBAマクロで、以下の様なプログラムを作成し計算させていますが、 一度入力した値がテキストポックスに残ってしまい、なんとかならないかなと 思っています。 (1)複数シートにそれぞれコマンドボタンを配置し、クリックすると同じユーザー フォームが立ち上がるようになっています。 (2)そのユーザーフォーム内に、テキストボックスが複数あり、それぞれ値を入力 して計算スタートさせると、ワークシートの1行目から数千行目まで計算して 各行に計算結果を表示します。 (計算は、既に各行に入力済みのデータとこのテキストボックスの値を元に算出されます) (3)次に、別のシートでコマンドボタンをクリックし、ユーザーフォームを立ち上げると、 前のシートで入力した値がそのまま各テキストボックスに入ってしまいます。 (これは、必ず起こる訳ではなく、時々起こるのですが、起こる場合は、コマンドボタン をクリックしてからユーザーフォームが立ち上がるまでの時間が若干短い感じがします) ※一度、上記の計算をさせるとテキストボックスの値がそのシートの特定のセルに入り、 次回ユーザーフォームを立ち上げた際に、テキストボックスに入るようになっています。 (Private Sub UserForm Initialize を使っています) パソコンの構造を、私はよく知らないのですが、おそらく、一度テキストボックスに値 を入力して計算させると、どこかのメモリにそれが残っていて、次にユーザーフォーム を立ち上げた際にそれが入ってしまうのかな、と思っています。 (ただし、もし前の値が入ってしまったとしても、一度そのユーザーフォームを消して から、再度立ち上げると、正常な値(そのシートの特定のセルを参照)が必ず入ります) 何か、プログラムにより、このメモリ?を消す?、あるいはうまく解決する方法など 考えられませんでしょうか? もし、詳しい方がおられましたら、御教示いただけませんでしょうか。 よろしくお願いいたします。

  • エクセルで特定のセルに入力後エンターを押すとマクロが起動

    エクセルで特定のセルに入力後エンターを押すとマクロが起動 エクセルで、ファームで作成したボタンを押すとマクロが起動するように して有ります。 記憶させたマクロの起動にはファームで作成したボタンを右クリックし 「マクロの登録」でモジュールを登録する方法しか知りません。 これを特定のセルにデータを入力後エンターを押して入力値が確定されたら このマクロが起動するようにするにはどうすればいいのでしょうか?

  • エクセルで時間入力

    エクセルで、マクロを使用してフォームボタンを押したら現在の時間を セルに入力するにはどうしたらよいでしょうか?

  • エクセルで時間入力

    エクセル2003です 時間の入力について教えてください。 A1セルに 8:00と入力すると8.00 8:15と入力すると8.25 8:30と入力すると8.50 8:45と入力すると8.75 というように入力するには、表示形式又は関数をどのように設定すればいいか教えてください。 マクロやVBAではない方法で御願いします。

  • EXCEL VBA シート内の特定のセルに値が入…

    EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム EXCELシート内の特定のセルに値が入力された際に処理を実行するプログラムをEXCEL VBAで作成したいと考えています。 EXCELに計測データを取込み、このデータが設定値以外の場合のみ、トリガーを出す様なイメージで使いたいと思います。 どの様に考えれば良いでしょうか?サンプル等ありましたら紹介ください。 上記質問の”トリガー”について補足します。 あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。 単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作したいという意味です。。

  • エクセルで入力文字のチェック

    エクセルのセルに入力された値がUnicodeで****から****までの範囲内のみの文字で記述されているかのチェックをしたいのですが、 例:B3には電話番号を入力したいので半角数字と()のみで構成されているかをチェックする。 VBAでどのように記述すればよいのでしょうか? もう一つ、 セルB3に文字を入力し終えた時または、B3にあるカーソルを他のセルに動かした時に VBAが走る…と言う記述方法はあるのでしょうか? ボタンを用意し、入力後[CHECK]を押すとVBAが動くと言うのは出来るのですが… 以上よろしくお願いいたします。

専門家に質問してみよう