![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
初心者のため、伝わるかわかりませんが、
次のような動作をVBAで行えなくて困っています。
・行いたい事 (※前提として"行"ごとに実行します)
J列が"1"だった場合、
L列にJ列が"1"になった日付(yyyy/mm/dd)を入力する
ただし、J列には関数を使用し"1"と表示されているため
セルの値変更ではありません。
・現在のVBA
Private Sub Worksheet_Calculate()
If Target.Row >= 1 And Target.Row <= 100 And Target.Column = 10 Then
With Target.Offset(, 2)
.Value = Now()
.NumberFormatLocal = "yyyy/mm/dd"
End With
End If
End Sub
※J列が関数を使用しているため、Calculateにしています。
2行目の↓の部分でエラーになってしまっています。
> If Target.Row >= 1 And Target.Row <= 100 And Target.Column = 10 Then
どなたかご教授いただけたら助かります。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
ANo.4です。
> 最初の説明で一部抜けていたのですが、
> L列(日付代入列)にはすでに関数が入っており、
> これを実行するためには、
> J="1"の場合"L"を一度クリア ⇒ 日付入力
> の手順にすればよいのでしょうか。
今現在は、J列の値が1でL列が空白の場合のみ、L列に日付を入れています。
現在L列に入っている関数が何をする物かわかりませんので、消して良いのかどうかの判断は私ではできません。
ご自分でよく検討してどのような場合なら日付で書き換えてしまって良いのか考え、マクロに反映してください。
そうでなければ、マクロでチェックと日付を入れる列を別な列にして、L列の関数はその列に日付が入っていれば日付を、入っていなければ今までの関数の結果を表示する様にすればよいでしょう、
この回答への補足
度々ありがとうございます。
L列の関数は日付代入の時にはクリアにして良い内容となっています。
別の列へ日付を入れ、それを参照させる方法は思いついていなかったですが
これだとスムーズにできるかもしれません。
No.4
- 回答日時:
こんなのでやりたい事になりませんか?
J列の値が1から変化してもL列の日付は消えませんし、再度1になっても更新しません。
Private Sub Worksheet_Calculate()
For i = 1 To 100
If (Cells(i, "J") = 1) And (Cells(i, "L") = "") Then
Cells(i, "L") = Now()
End If
Next i
End Sub
この回答への補足
ありがとうございます。
これでやりたい事になりましたが、1点問題がありました。
最初の説明で一部抜けていたのですが、
L列(日付代入列)にはすでに関数が入っており、
これを実行するためには、
J="1"の場合"L"を一度クリア ⇒ 日付入力
の手順にすればよいのでしょうか。
試してみましたが、手段が間違っているようでしたので、
もしご存知でしたら、ご教授いただければと思います。
No.3
- 回答日時:
方法1:アナタがやりたかったこと
private sub Worksheet_Calculate()
dim h as range
application.enableevents = false
for each h in range("J1:J100")
if h = 1 then
h.offset(0, 2) = now
else
h.offset(0, 2).clearcontents
end if
next
application.enableevents = true
end sub
方法2:正攻法
通常のエクセルの作り方では,J列に並んだ計算式が実際に計算される前,まずどこか別のセルに「元の値」を手で記入し,それを受けてJ列の該当するセルが1なりナンなりに変わります。
例:
J1に
=H1
であれば,H1が元のセル(H1に記入すると,J1が計算される)です。
例:
J1に
=SUM(E1:H1)
であれば,E1からH1のどれか(一つ又は複数同時に)が編集されると,J列が変わります
例:
J1は
=H1
だけど,そのH1は
=Sheet2!G1
になっているなら,シート2のG1が計算の出発点セルです
calculateイベントではなくchangeイベントを使い,これらの出発点セルに対して,そのセルを変えたらどのJセルが変わるのかに応じて,変わるJ列セルが1になったか否か調べてL列に日付時刻を記入します。
#参考:
言わずもがなですがJ列が「他のセルに手で記入しなくても」勝手に計算が変わる場合は,この方法は利用できません。
2つの方法を教えていただきありがとうございます。
方法1についてですが、こちらではL列に日付を代入できますが
J列が"1"の場合L列すべてが変更されてしまいます。
"行"ごとに実行させる方法があればそちらを試したいと思います。
方法には、おっしゃる通り直接データ変更が必要なため
他の方法がなく、最終手段になった場合はこちらを
参考にさせていただきたいと思います。
No.1
- 回答日時:
Worksheet_Calculateイベントには、Targetという引数はなく、したがって再計算されるRangeの特定はできません。
それを断わりもなく使用するのでエラーになるのです。
Worksheet_Calculateイベントで、再計算の位置で処理を分けたいという質問がよくあります。たいていの場合それはできないという回答のようです。
便宜的に特定のRangeの再計算だけのシートを別に用意して、そのシートを参照させるようにします。そのシートにWorksheet_Calculateイベントを書けば、再計算の位置が特定できたように見えて、処理を分けることができます。
Calculateでは無理だったようですね。
web上で探して見つからなかったのも納得できます。
別シートでの処理を最終手段として参考とさせていただきたいと思います。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
ある一定時間を超えた場合の超...
-
Excelの表以外が暗い?
-
隣のセルに入力したら自動的に...
-
【スプレッドシート】指定の日...
-
EXCEL 経過年数の平均を求めた...
-
エクセルでの複数条件下での標...
-
エクセルにて「週」から日付を...
-
SUMPRODUCT関数 文字列を含ん...
-
エクセルで年月の合計の関数を...
-
Excelのセルにカレンダーの月日...
-
エクセルで「ぶら下げ」書式を...
-
(条件付書式)EXCELで土日の行...
-
Excel:月またぎを含む日数の差...
-
エクセルで、一つのセルに二つ...
-
エクセル2010で合計5000に近い...
-
複数連続した列幅や行高を一発...
-
エクセルの質問です。
-
Excelで作ったマニュアルが…
-
エクセルで可視セルのみ計算さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルでの複数条件下での標...
-
【スプレッドシート】指定の日...
-
ある一定時間を超えた場合の超...
-
Excelの表以外が暗い?
-
エクセルで年月の合計の関数を...
-
隣のセルに入力したら自動的に...
-
エクセルにて「週」から日付を...
-
EXCEL 経過年数の平均を求めた...
-
エクセルで「ぶら下げ」書式を...
-
エクセルで、一つのセルに二つ...
-
エクセルで角度の計算できますか?
-
Excel:月またぎを含む日数の差...
-
EXCEL 年月表示をするVBAを教...
-
複数連続した列幅や行高を一発...
-
エクセル シフト表 6連続勤...
-
エクセル2003 MONTH関数で
-
excelでの文字を隠す方法
-
エクセル くじ引きの口数が別々...
-
エクセルの質問です。
おすすめ情報