- ベストアンサー
Excel2003 VBAのChangeイベント
- 特定の1つのセルに時刻をキーボードで入力(入力規則で時刻のみ可)したら、以下のコードが動くようにしたいと思っています。
- Changeイベントを使用することらしいのは、解ってきたのですが組み立て方がわかりません。
- 素人には難易度が高すぎて難渋しています。ご教示いただけたら幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
A1セルに記入した時に作動する事にする。 手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range) if target.address <> "$A$1" then exit sub if target = "" then exit sub With ActiveSheet.ChartObjects("グラフ 1").chart.Axes(xlCategory) .MinimumScale = Range("A2").Value '最小値 .MaximumScale = Range("A10").Value '最大値 End With end sub ファイルメニューから終了してエクセルに戻る A2、A10に所定の値が現れていることを確認の上、A1セルに記入する。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>"A2"と"A10"はA1から関数で引用する時刻データのため、… 元のご説明には確かに書いてありませんでしたが、回答は「A2」と「A10」は「A1を元に計算する」計算式になっていることを織り込み済みです。 しかし現実にはうまく動いていないという事は、 1.「A1」だの「A2」だの「A10」だの「実際とは違う」内容でご相談を書いているので、寄せられた回答のマクロを実地に合わせてご自分で適切に修正できていない 2.「A2」や「A10」のいまだ不明な内容が不適切なため、動作のシナリオに乗っていないので、A2やA10の数式を前述したように適切に直さなきゃならない のどちらかの状況だと推測されます。 ●A2やA10を固定の数値にして、A1を記入するとキチンと結果が出ることを確認してください。 (元のご相談内容に対しては、正しく解決されていることを確認してくださいという意味です) ●一体何の情報を出し足りていないのか、お手元のエクセルをよく見て、新しいご相談として投稿し直して下さい。
- xls88
- ベストアンサー率56% (669/1189)
A1に日付を入力と仮定 エラー処理は適宜追加してください。 対象はAxes(xlCategory)項目軸で間違いないですか? Private Sub Worksheet_change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub With ActiveSheet.ChartObjects("グラフ 1").Chart.Axes(xlCategory) .MinimumScale = Range("A2").Value '最小値 .MaximumScale = Range("A10").Value '最大値 End With End Sub
お礼
回答ありがとうございます。
補足
やってみました。思い通りになっています。有難うございます。 ただ、質問で説明不足だったのですが、最小値の"A2"と最大値の"A10"はA1に入力した時刻から関数で計算した時刻データです。そのせいなのか、A1に時刻を入力してreturnキーを押しただけでは、コードが働かず、もう一度A1をクリックしないといけない状況です。returnキーを押すだけにするにはどうしたら良いでしょうか。 最初から、きちんと説明しておけばよかったです。 申し訳ありません。
お礼
この週末のうちに解決したいと思っていたので、本当にありがたいです。ありがとうございます。
補足
ANo.1の方にも申し上げたのですが、 "A2"と"A10"はA1から関数で引用する時刻データのため、A1に時刻を入力した後に、もう一度A1をクリックしないといけない状況です。 returnキーを押すだけにするにはどうしたら良いでしょうか。 説明不足で申し訳ありません。