• ベストアンサー

Excelで簡単入力

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

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

  • ベストアンサー
  • 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

専門家に質問してみよう