VBA初心者がやりたいこととは?

このQ&Aのポイント
  • VBA初心者がB列に数字を入力し、C列に累計を表示する方法や入力履歴を表示する方法についての質問です。
  • また、Enterの使用方法やクリアボタンについても知りたいです。
  • VBAの学習方法やVBAを使っている人たちについても興味があります。
回答を見る
  • ベストアンサー

VBAでやりたいこと質問します!

こんにちわ。VBAを知って数週間の初心者です。インターネットで質問し回答をコピーして使用したりしています。 使っているうちに、ここはあーしたいあそこはこーしたいとやりたいことが増えてきてしまいました。 ご覧の皆様、良きご回答をお願いします<m(__)m> やりたいことはB列に数字を入力、C列にB列に入力した数字の累計(例.B5の累計はC5、B6の累計はC6、B7の累計はC7・・・)を表示、B列の任意のセルの入力履歴をI列の任意のセルに1回ずつ縦(例.B11の履歴を1回ずつI5、I6、I7、・・・)に表示する。 B12の入力履歴はJ列に1回ずつ縦(J5、J6、J7、・・・)に表示する。 同じようにB13の入力履歴をK列(K5、K6、K7、・・・)に表示する。 それを繰り返しB14はL列にB15はM列、B16はN列に縦に1回ずつ履歴を表示する。 B列の各セルに数字を入力したとき、Enterを2回押すと入力するセルが移動する。 Enter1回のときは、同じセルに続けて数字が入力できる。 B列の各セルに入力した数字は、C列に設けたクリアボタンでクリアすると直前の入力がクリアできる。 D列にはオールクリアボタンを設け、セルの値をオールクリアする。 電卓の「C」、「AC」ボタンの様に使いたいです。 以上、思いつくままに綴ってしまいました。 初心者が、わがままいって本当にすいません<m(__)m> 本やインターネットで、勉強しているつもりですがいつになったら組めるのか予想もつきません((+_+)) よろしくお願いします・・・・追伸、インターネットのVBAに関する質問にすばらしい回答をされている方々はVBAを仕事で使ってみえるのでしょうか?又は 個人的に勉強されているのでしょうか? どうすれば、あのすばらしいアンサーの方々に近ずけるのでしょうか・・・

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

思いつくままの詰め込みご相談で、回答するのが大変です。 ご質問は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 #詰め込みご相談に対しては、こんな感じにさらさらっと回答が寄せられて終わりです。 >インターネットで質問し回答をコピーして使用したりしています。 ツカエる回答が欲しければ、それなりにご質問者さんも丁寧にご相談なさってください。

tomochannjejeje
質問者

お礼

早速のご回答ありがとうございます。 インターネットで質問するのも、まだ2~3回目のため要領が分からず詰め込みすぎてしまったようです。<m(__)m> アドバイス通り状況を補足して、別途投稿し直します。 またよろしくお願いします。

関連するQ&A

  • Excel VBA の作り方について【初心者】

    Excel VBA の作り方について質問させてください。 A1セルに「営業部【山本】」と入力されています。 B1セルに「01:35:24」(タイム)と入力されています。 (1)D1セルに「山本」を抜き出して表示 (2)E1セルに「95」(分数)で表示 (3)A2以降で同じ作業の繰り返し(最終入力列まで) というVBAを作成しております。 Sub macro1() '行数確認 nr = Range("A1048576").End(xlUp).Row For i = 1 To nr '名前抜き出し x = Range("A1").Offset(i - 1) j1 = InStr(x, "【") j2 = InStr(x, "】") Range("D1").Offset(i - 1) = Mid(x, j1 + 1, j2 - j1 - 1) '分表示 x = Range("B1").Offset(i - 1) Range("E1").Offset(i - 1) = Int(x * 24 * 60) Next i End Sub ここまではプログラムが完成しています。 この後、 (4)C列セルに入力されている数値をF列セルにそのまま入力 したい場合には、どの部分にどのようなプログラムを追加すればよいでしょうか? よろしくお願いします。

  • エクセルのVBAに関する質問です。

    エクセルのVBAに関する質問です。 仮にA列にA1からA14まで(12341231212345)と入っていて、さらにB列にB1からB14まで(38906493087639)と入っていたとします。A列の(2)の隣にあるB列の数字はそれぞれ(8407)になりますよね。 この2のとなりのB列の数字を、A列の最初から(1234)(123)(12)(12345)と1を区切りとして、C列に、2に対応していた先ほどの数字を入力したいのです。 つまりC列には(88884440077777)と入るようにしたいのですが、VBAド素人の私には解説書を読んでもいい知恵が浮かびません。 どなたか、ご説明か、できればVBAのコピーを取らせていただけないでしょうか? よろしくお願いいたします。

  • EXCEL VBA教示お願い致します

    あらかじめA1セルに●を設定してあり K2からT2に1~10の符号をいれておきます A3からJ3の10個のセルに1から10の数字を入力した時 同じ数字は入れない 例えばA3に5、B3に7、C3に9と入力した時に K3からT3の5,7,9の位置セルにA1の●を代入する こんなことができるVBAを利用したいのです 丸投げで申し訳ありませんがよろしくお願いいたします。

  • Excel、売上表の累計欄、未入力の場合「-」を表示させたい。。

    WindowsXP/Excel2000を使用です。 Excelで、売上表を作りました。 A列に日付、B列に売上、C列に売上の累計という、 単純なデータです。 C列の累計欄には、下記の様な計算式を入れています。 =B1 =B1+B2 =B2+B3  ・  ・  ・ 例えば、今日3月13日の売上データを入力すると、 累計の数字に加算されていきます。。 (14日以降のセルにも、累計の数字が入ってしまいます。) ここで、問題なのですが、 B列のセルに、売上データを入力していない場合に、 C列(累計)が、表示されないようにしたいのですが、可能でしょうか? 理想を言えば、「-」←このマークが入れば、ウレシイです! よろしくお願いします。

  • EXCEL VBAマクロについて質問です

    Excel VBAマクロについて質問です ※Excel Ver.は2005でやってます 例のような感じで、 同じ列(列1)に或る同じ列名の数字(列2)を足して 違うセル、または違うブックの指定行に合計値を横並び表示させたいのですがうまくいきません 例のように 同じ言葉が含まれているもの(りんご・青りんご)は足して出したいと思ってます 【理想】実行前 ****************************** 番号  名前  個数 001   りんご  1 002   ばなな  2 003   いちご  3 001   青りんご 2 ****************************** 【理想】実行後 ****************************** 番号   りんご  ばなな  いちご 001    3      -     - 002    -      2     - 003    -      -      3 ****************************** ※「-」記号はついてなくても大丈夫です 現在、組んでいるコード・実行結果をのせておきました どなたか享受ください、お願いいたします j = 1 For i = 0 To Range("A65536").End(xlUp).Row cnt = cnt + Range("列2" & i).Value If Range("C" & i + 1).value <> Range("C" & i).value Then 'もし次の行が違う名 Range("任意セル" & j).Value = Range("A" & i).Value '列1 Range("任意セル" & j).Value = Range("B" & i).Value '列2 Range("任意セル" & j).Value = cnt '数字合計 j = j + 1 '出力行カウントアップ cnt = 0 End If Next

  • VBAで

    エクセルのVBAで下記の作業をするにはどうしたらよいのでしょう? 「C」で作成したスクリプト ↓ があります。 congruence( m n a b ) (for k = 1 to m step 1 ) j=m1(nk+b-a) break j=floor(j) return m*j+a エクセルのシートに下記の入力セルを設け、a b m n の値を入力すると、上記のスクリプトを作動させて その解をセル「k」の場所に表示させたいのです。 x≡a(mod m) x≡b(mod n) x=K VBAの知識はほとんどありません。 よろしくお願いします。

  • エクセルのVBA。時間を自動で表示させたい

    こんにちは。 よろしくお願い致します。 在庫数が0になった時間をK列に表示したいのですが、うまく出来ません。 H列、I列、J列、K列を使います。 H列は自分で数字を入力しています。 I列はCOUNTIFで他のシートから数字を持ってきています。 J列には「H-I」の数式が入っています。 そしてK列にJ列の数字が0になった時の時間を表示したいです。 どうぞよろしくお願い致します。

  • エクセルのVBAに関しての質問です。

    エクセルのVBAに関しての質問です。 あるセルに入力された数字の行から行までを非表示にしたいのです。 例えば、A1に15、B1に30という数字が入っていれば、行15から30を非表示する、という感じです。 よろしくお願いします。

  • エクセルの質問です。

    エクセルの質問です。 例えば、A1・B1・C1セル全てに数字(文字列)が入力されたら、Z1セルにAと表示される。 また、F1・G1・H1・I1セル全てに数字が入力されたらZ1セルにBと表示される。 上記のように指定したセル全てに入力されるとそれぞれA・B・C・Dと4つパターンで表示される ようにしたいのですが、わかりません。 おそらくIF関数で条件を組み合わせて作るのだと思いますが、どなたかご教授お願いいたします。

  • 先般、下記のvbaのコーディング事例の回答を頂きました。

    先般、下記のvbaのコーディング事例の回答を頂きました。 再度ご質問させて頂きたく、よろしくお願いします。 質問1 a列に点数を入力すると同時にb列に表示させたい。 →This workbookのPrivate Sub Workbook_Open()にvbaを登録するのでしょうか? 質問2 a列に点数が入力された場合のみb列を表示させたい。 =================== a1~a100のセルに点数が入力されているとします。 その点数を元に下記の通りb列にランクを自動的に付ける場合の vbaのコーディングはどうなりますか? ss(95以上) a(90-94) b(85-89) c(80-84) d(75-79) e(70-74) f(65-69) g(60-64) h(55-59) i(50-54) j(50以下)

専門家に質問してみよう