- ベストアンサー
エクセルでこんなことは、できますでしょうか?
エクセルについて、全然詳しくないのですが・・・こんなことは可能でしょうか。 作成した数表の数値入力の欄をワンクリックすると数値が増える・・・ そんなものを作る事はできるでしょうか。教えてくだされば助かります。 よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1のA2:A11をクリックしたら数値が増えるようにしてみました。(windows98、Excel2000です) ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 Sheet1に戻りA2:A11をクリックしてみて下さい。クリックしたセルの数値が増えます。 同じセルを連続してクリックする場合を想定してクリックした後、A1に動かしています。 ※クリックする時の状態、条件がもう少し詳しく分かれば、書き方も変わるでしょう。 1.クリックするのは単一セル?セル範囲?指定したセル? 2.同じセルを続けてクリックする? 3.クリックした後のアクティブセルはどこ?(下上左右またはそのまま?) 4.増分は1でいい? 5.クリアする必要はある? などです。 マクロDataClearを実行すると、A2:A11をクリアします。 ※マクロの実行:ツール→マクロ→マクロで『DataClear』を指定して実行します。 また、こんな質問もありました。 『クリックするだけで値が増加するセルを作れますか?』 http://www.okweb.ne.jp/kotaeru.php3?q=305895 ここからコピーして貼り付け ↓ Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False '今は、A2~A11の範囲をクリックした時だけ反応します If Not Intersect(Range("A2:A11"), Target) Is Nothing Then With Target If IsNumeric(.Value) Then 'セルが未入力か数値だったら加算 .Value = .Value + 1 Range("A1").Select End If End With End If Application.EnableEvents = True End Sub 'Sheet1のA2:A11をクリアする Sub DataClear() Application.EnableEvents = False Range("A2:A11").ClearContents Application.EnableEvents = True End Sub
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
#5のご解答のスピンボタンは本来の使い方に沿った方法で良いですね。VBAは良くないと思いつつ、毒を食わば皿まで。ご質問者のことを忘れたようになって済みません。 (スピンボタン貼りつけ) #4の解答をリストボックスの代わりに、スピンボタンを貼りつける。 (プログラム・コーディング) VBE画面に下記を貼りつけする。 Private Sub SpinButton1_Change() ActiveCell = SpinButton1 End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) SpinButton1 = ActiveCell End Sub (操作・利用方法) 目的のセルに例えば23を入れ、そのセルをアクチブにして ▲をクリックすると24に、もう一度▲をクリックすると25 2なり、▼をクリックすると24、もう一度▼をクリックすると23になるように出来ました。 下限は0、但しプロパティのMinを-100にすれば 下限は-100に出来る。何も入力のないセルをアクチブにして一度▲をクリックすると,0より1ずつカウントUpし、また▼をクリックするとカウントDownします。 SmallChangeを2や3にすれば、2づつ等カウントアップできる。
- comv
- ベストアンサー率52% (322/612)
みなさん こんばんは VBAを否定することは毛頭ありませんが #1 imogasiさん の C.VBAというプログラムを組む方法本件の 質問者に対する解答としては不適かと。 と #2 MovingWalkさん のアドバイスを合わせて 考えると ツールバーのフォーム のボタン類が 適当な気がするのですが シート上にボタンを配置する(印刷はされません)方法が ご質問の意図と違う場合は無視して下さい ・メニューの表示 ツールバー フォーム を選択 ・表示された ツールバーの 案1)スピンボタンを選択 縦長 案2)スクロールバーを選択 横長 ・数値入力セルのセル上左または隣のセルなどに配置 (オートシェイプの四角を書く要領です) ある程度大きめに配置した方が操作し易いです ・増減値を設定 配置したボタンを右クリック コントロール書式設定 コントロールタブ 現在の値:無視して下さい 最小値:0(クリックしても指定数値で止まります) 最大値:****想定される最大値を入力(同上) 変化の増分:1(1クリックの増減値) 案2のみシャフトの増分がありますが適当に入力 (変化の増分の10倍程度かな) リンクするセル:変化させたい数値入力セルを指定 プロパティタブ オブジェクトを印刷 のチェックを外す ボタンの外観編集はオートシェイプと同様なので 描画ツールバーの図形選択ボタン(白矢印)ONで もしくは ボタン上で右クリックの後ボタン上で 左クリックで 選択可能です。
- imogasi
- ベストアンサー率27% (4737/17069)
#3にプログラムで対処する方法がでましたので。 VBAの方法が「あり」なら、リストボックスを使う方法です。マクロを使いますが、ほんの1行だけで、ほとんど操作で出来ます。 似たような以前の質問の作り変えです。 G1:G10の各セルに1,2,3、・・・10を入力する。 (補足要求に解答なく、1-10まで対処できるように しました。) (1)VisualBasicのツールバーを出す。 表示-ツールバー-VisualBasicをクリック する。 「リストボックス」のコントロールのアイコンを探し (しばらくアイコンの上にカーソルを置いておくと リストボックスとコメントが出てくる)クリックする 。アイコンのポインターが+になるのでワークシート 上の、適当な場所に持ってきて、¬形にこするとリスト ボックスが出来る。 4隅と辺中間に8つの小四角が現われる。 (2)リストボックスの中で、マウスを右クリックし、出てき たリストの中から「プロパティ」をクリックする。 (3)「プロパティ」リストの中の「ListFillRange」を探し 、右列にG1:G10等と入力する。15項目あれば G1:G15といれる。G列でなくても、H列でも邪魔になら ないところなら何処でも良い。右上の×をクリックして 「プロパティ」リストを消す。 (4)リストボックスの中で、ダブルクリックすると VBEの画面が出て Private Sub ListBox1_Click() End Sub になる。 (5)Private Sub ListBox1_Click() ActiveCell = ActiveCell + Val(ListBox1.ListIndex +1) End Sub の中1行をコピーしVBE画面のPrivateとEnd Subの行 間に貼りつける。ActiveCell~ListIndex +1) までは1行です。ご注意。 そして実行-SUB/ユーザーフォームの実行を クリックする。 (6)エクセルのタスクバーのアイコンをクリックして、Sh eet1に帰る、 (7)まずセットしたいセルをクリックする。そしてリストボ ックスの項目の中より増加したい数の行を探しクリック する。 (8)一ステップまえにクリックしていたセルに、クリックし たリストボックスの数が加算してセットされる。 リストボックスの中をクリックしなければ、どのセルに も自由にデータを入力出来て、本件での影響はない。 (9)前回と同じ数を加えたい時は、一旦リストボックスの別 の数をクリックして後(7)を行うこと。
- MovingWalk
- ベストアンサー率43% (2233/5098)
シートのセルをクリックして何か特別なことを行うということはできないと思います。 クリックのされたこと(イベント)をユーザ側で検出できないからです。 シートにボタンをつけて、そのボタンがクリックされたときに処理を行なうことはできますが。
- imogasi
- ベストアンサー率27% (4737/17069)
>数値入力の欄-->セルのこと。表示形式が数値のことですか 。本件質問をあまり左右しない。 >ワンクリック-->イベントといいます=きっかけ・契機の こと。 VBAというものを使わないと 捉えられないと思います。 >数値が増える・-->+1のことですか。あるいは+3とか 一定値ですか。セルD1にある数値を加 算して増やしたい。どれですか。 >数値が増える・-->増やした結果をクリックした元の セルに戻すことでしょうか。 これはエクセルの苦手な部分です。 一般には別セルに出すのが基本。 >作る事はできるでしょうか-->A.メニューをクリック したり、キーボードより入力したり ツールバーをクリックしたり、いわゆる 「操作」で実現する方法。 まづ不可能です。 B.関数を使う。計算式を結果をセット するセル側に入れる方法。 本件適当なものがないと思います。 C.VBAというプログラムを組む方法 本件の質問者に対する解答としては不適かと 。