思いつくままの詰め込みご相談で、回答するのが大変です。
ご質問は1投稿で1つずつ解決を積み重ねてください。こちらのような質問相談掲示板の、基本的なマナーです。
>履歴の蓄積
changeイベントで随時転記していきます。
準備:I4からN4のセルに、それぞれ「履歴」とかなんとか記入しておく
手順:
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける
private sub Worksheet_Change(byval Target as excel.range)
if application.intersect(target, range("B11:B16")) is nothing then exit sub
if target.count > 1 then
msgbox "ENTER SINGLE CELL"
application.enableevents = false
application.undo
application.enableevents = true
exit sub
end if
cells(65536, target.row - 2).end(xlup).offset(1) = iif(target = "", 0, target.valeu)
end sub
ファイルメニューから終了してエクセルに戻り、B11からB16の範囲に記入する。
#クリアボタンを使わずにセルの記載内容を消去したときの履歴の取り方も不明なので、てきとーに細工してあります。どーしたいのか考えて適切に応用してください。
>Enterを2回押すと入力するセルが移動する。
日本語入力がONになっている状態での記入を想定したご質問ですか。
それとも何か違う事を考えているのでしょうか。状況を詳しく補足して、別途ご相談として投稿してください。
>C列に設けたクリアボタンでクリアすると直前の入力がクリアできる。
「クリアボタン」て何を使おうとしているのか不明です(*)が、単純に
1.履歴を調べて「1つ前」が記録されているか確認する
2.隣のB列セルをクリアする
3.履歴があれば、1つ前の記録をB列セルに転記する
4.履歴の1番下をクリアする
といった段取りです。
*:補足
エクセルでは「フォーム」コントロールのコマンドボタン、「ActiveXコントロール」のコマンドボタン、オートシェイプの図形やJPG画像などで作成したボタンなどを利用することが出来ます。具体的にどれを使うかに応じて、マクロの書き振りが変わります。
>オールクリアボタン
単純にセルをクリアするだけです。
sub macro2()
application.enableevents = false
range("B12:B16").clearcontents
range("I5:N999").clearcontents
application.enableevents = true
end sub
#詰め込みご相談に対しては、こんな感じにさらさらっと回答が寄せられて終わりです。
>インターネットで質問し回答をコピーして使用したりしています。
ツカエる回答が欲しければ、それなりにご質問者さんも丁寧にご相談なさってください。
お礼
早速のご回答ありがとうございます。 インターネットで質問するのも、まだ2~3回目のため要領が分からず詰め込みすぎてしまったようです。<m(__)m> アドバイス通り状況を補足して、別途投稿し直します。 またよろしくお願いします。