• ベストアンサー

エクセル2000:決まったセルに数値が入力されたらマクロを起動させたい

エクセル2000:決まったセルに数値が入力されたらマクロを起動させたい。 たとえばセルA1に、1以上の数値が入力されたときに、セルA2に今日の日付を入力させる マクロの記述はどうすれば宜しいでしょうか? 以下の記述で、セルA2に日付は入力させられるのですが、 セルA1に1以上の数値が入力された場合に起動させる方法が分かりません。 Range("A2").Select SendKeys "^(;){ENTER}" ご教授の程、宜しくお願い申し上げます。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

セルA1に1以上の数値が入力されたら、A2に現在日付をセットする、で良いのかな。 Sheet1のシートモジュールに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then If Target.Value > 1 Then Range("A2").Value = Date End If End If End Sub >起動させる方法が分かりません SendKeys "^(;){ENTER}" に拘らずにA2に日付が入れば良いのでしょう。 Sendkeyなど最後の手段で、こんなコードなどはまねしないほうが良いと思う。

SHI-UE
質問者

お礼

ありがとうございます。 丸写しさせて頂きました。バッチリです。 会社のパソコンは、OSはXPまで何とか上がってますが、 Officeは2000のまま。 なるほど、Sendkeysはバグるんですね。 今後、使わないようにします。 Dateが簡単ですね。

その他の回答 (5)

回答No.5

>起動じゃなくて実行ですね。 そうですね  質問者の表現に合わせました。 Sendkeysは つい最近エラーで悩みました 作成したマシンは WinXP+Excel2002 これで問題ありませんでしたが ノートはWin Vista+Excel2002 これでエラーが出ました 複数の環境で運用するので困りました。 MSのサイトにこのケースが報告されていてVista+Excel2002での不具合うんうん とありました 2003以降では解消されているみたいですが・・。 結局コードを修正しました。 SendKeysは使わないことにしました OSの違いによるトラブルは結構経験しています OS側へ依存するコードがあるとかなりの確率でひっかかってきました Win98、2000のころユーザーフォーム上にスクリーンキーボードを作成したりもしましたが Xpになってから 正常に動作しません 過去の作品がことごとく使えなくなっていくのは本当に困りものです

SHI-UE
質問者

お礼

ありがとうございました。 Sendkeysの使用は控えたいと思います。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.4

> それを判断する時点で既にマクロは起動しているからです 確かに^^; 起動じゃなくて実行ですね。でもまぁ、厳密に言い出すと マクロの意味の定義によっては「起動している」という表現も 微妙になりそうな気もするけどね。 Worksheet_Change イベント等については既に十分情報が揃ってる ようなので、 > 以下の記述で、セルA2に日付は入力させられるのですが、 日付を入れるだけで SendKeys は使わない方がいいです。 SendKeys はその仕様上、誤動作を引き起こす可能性を持って いますから、使わないで済むなら使わないようにする事を お勧めします。   Dim ws As Excel.Worksheet   Set ws = ThisWorkbook.Worksheets("Sheet1")   ws.Range("$A$2").Value = Date ただし「地域と言語のオプション」の影響を受けます。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/function/vba_date.html#date

SHI-UE
質問者

お礼

ありがとうございます。 Sendkeysの使用は控えたいと思います。

回答No.3

決まったセルに数値が入力されたらマクロを起動させたいとの事ですが 回答1番の方の、ワークシートモジュールのChangeイベントで似たような事が出来ます。 Changeイベントはシートのいずれかのセルが変更されたら動作しますので、これを応用します。 Private Sub Worksheet_Change(ByVal Target As Range) ;Target.Addressに変更されたセルのアドレスが格納されます、この場合はA1のセルが変更された時に処理を行う様にしてます。どのセルが変更されてもこのイベントが発生しますがA1以外は何も処理をしていないので、見かけ上はA1に変更が有ったときにマクロが動作している様に見えます。 If Target.Address = "$A$1" Then If Target > 1 Then Range("A2").Select SendKeys "^(;){ENTER}" End If End If End Sub

SHI-UE
質問者

お礼

ありがとうございます。 Sendkeysは将来的にバグりそうなので、回答1さんを使わせて頂きました。

回答No.2

OSを書きましょう SendKeysはOSの制約を受けます! ちなみに  決まったセルに数値が入力されたらマクロを起動させたい というのは不可能です それを判断する時点で既にマクロは起動しているからです

SHI-UE
質問者

お礼

失礼しました。 OSはWinXPです。 以後、気を付けます。 皆さんの回答よりChangeイベントで解決出来ることが分かりました。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

ワークシートモジュールのChangeイベントを利用しましょう。 詳しくはこちら↓を参考にしてください。 http://www9.plala.or.jp/siouxsie/date06.html

SHI-UE
質問者

お礼

ありがとうございます。 回答1さんを参考にさせて頂きました。 教えて頂いたサイトは分かりやすいので、じっくり勉強したいと思います。

関連するQ&A

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

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

  • マクロで複数のセルに数値を入力したい

    エクセル、マクロとも初心者なのですが、タイトル通りのことをするにはどうしたらよいか教えてください。 やりたいことは、 「指定したアクティブセル(毎回変わる)を選択し、その隣のセルにあらかじめ決められた数値をマクロで入力する」というものです。 例えば・・・ A1をアクティブにし、マクロを実行する B1、C1、D1、E1のセルに決められた数値が入力される こんな感じです。 基本的なことかもしれませんが、どうかよろしくお願いします。

  • エクセル マクロ 同じ数値のセルを検索

    教えてください。 sheet2のG1に3と入力しマクロを実行すると、sheet1のA列(通し番号)の3~5の行をコピーして、sheet2のA2にペーストしたいと思ってます。 (sheet1) 番号 数値1 数値2 数値3 数値4   1     5   10   15   20   2    10   15   20   25   3     5   15   20   20   4    10   20   15   25   5     10   15   20   20 ・    ・    ・    ・    ・ ・    ・    ・    ・    ・            ↓ (sheet2) 番号 数値1 数値2 数値3 数値4      3   3    5   15   20    20   4   10   20   15    25   5   10   15   20    20 イメージとしては上の通りです。 まずは、同じsheet1のG1に3を入力して、A列の3(A4)を検索することを目標にしましたが、ここの時点でこけてしまいました。。 Sub 同じ数値のセルを検索() Dim 番号 As String Dim FoundCell As Range Range("A1").Select 番号 = "G1" Set FoundCell = Cells.Find(What:="番号") If FoundCell Is Nothing = False Then FoundCell.Select End If End Sub 笑われると思いますが、これではダメでした。 どうかお助けしていただけないでしょうか。

  • Excelのマクロについて

    Excelについて全くの初心者で、今から勉強を始めるところですが、急遽、次のようなマクロを作成したいです。 アクティブなセルから右に6つ目のセルとそのセルから右に1つ、下に1つ目のセルに現在の時間を記入 どのように記述すればよいでしょうか。 ちなみに、的はずれかもしれませんが、以下のようなマクロを作りましたが、うまくいきませんでした。 よろしくお願いします。 Sub 時間入力() ActiveCell.Offset(0, 6).Activate SendKeys "^(:)" SendKeys "{TAB}" ActiveCell.Offset(1, 0).Activate SendKeys "^(:)" SendKeys "{TAB}" End Sub

  • エクセルマクロでご教授下さい。

    エクセルマクロでご教授下さい。 1.あるマクロをセルを入力(Enter)したら実行するには どのように記述すればいいでしょうか? 例えばG12に文字を入力しEnterした時 に実行したい。 2.あるマクロをシートを選択した時に実行するには どのように記述すればいいでしょうか? 以上宜しくお願い致します。

  • excelのセルに入力した数値

    excelのセルに入力した数値を計算させたいのですが何かいい方法は知りませんか? 例えば、A1のセルに1という数字を入力します。またそのA1のセルに今度は2という数字を入力したときにA1のセルの値が3になるようにしたいのです。簡単に言えば前に入力してある数値を記憶させておいて次に入力した数値をどんどん足していくようにしたいのです。

  • 条件に該当するセルをセレクト

    エクセルで、Topが100でLeftが50の地点が含まれるセルをセレクトするマクロを教えて下さい。 対象セルは"A8"になりますが、単純にRange("A8").Selectというのではなく、"100"と"50"という数値を用いて表すマクロを教えて下さい。

  • Excel セル内の自動Enter

    Excelのセルに日付データをコピペしたのですが、日付として設定されませんでした。この対処として、F2ボタンでセル内を編集できる状況にして、Enterボタンを押したら、日付として設定されるようになりました。 このような日付データが膨大にあるので、一括で対処したいのですが、よい方法はないでしょうか。今はF2を押す→Enterを押すの繰り返しをひたすらやっていて、とても苦労しております。 Excelのセルについて具体例の一つは以下の通りです。 A1のセルに□□2017/12/28 16:00と入力されています。※□はスペースとします。 スペースがあると困るので、 B1セルに=trim(A1)として、スペースを削除します。 これでは、数値として認識されないので、 B1セルをコピーして、C1セルに数値として貼り付けます。 C1セルには2017/12/28 16:00と入力されますが、この時点では日付として認識されないので、F2を押し、→Enterを押して、日付として認識させます。 以上

  • キー操作の「エンター」に該当するマクロは?

    エクセルでマクロを組んでいます。 キー操作をマクロにしていたところ「エンター」 に該当するコードがわからなかったので操作の確定 ができません。どうすればよいでしょうか? Dim データ, 変数, 行 As Integer データ = Cells(1, 7).Value For 変数 = 1 To データ Cells(変数, 5).Select SendKeys "%O", True SendKeys "+T", True SendKeys "+E", True ここでエンターに該当する操作をしたいんですが・・・ Next Range("A1").Select

  • マクロでセルに入力した数値をテキストファイルに出力したい。

    お世話になっております。 早速ですが質問です。 マクロを作成しています。 エクセルのシートの50項目のセルに数値を入力していき、 シート上の置いたボタンを押すことで、入力された数値を テキスト形式で出力したいと思っております。 なにぶん初心者のためか、いい知恵が浮かびません。 例えば、どのような記述方法があるか。 お力をお貸しください。

専門家に質問してみよう