advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 37696 for IF (0.007 sec.)
[[20240227164655]]
#score: 1591
@digest: b065836cff894e5f1c9f3c2f4b4d6887
@id: 96279
@mdate: 2024-02-28T01:29:33Z
@size: 6158
@type: text/plain
#keywords: bufrng (12619), ト停 (9412), 定ms (9344), myrng (5793), countlarge (4143), 品プ (3740), 除ap (3645), イベ (3091), 理fo (2748), ベン (2531), 2024 (2282), enableevents (2093), target (1951), offset (1915), 停止 (1639), intersect (1513), 成品 (1504), value (1476), レゼ (1474), ゼン (1304), ジボ (1285), 数セ (1238), 何点 (1225), change (1041), た" (997), 止め (990), 判定 (894), ント (888), ッセ (880), メッ (876), 火) (871), cells (857)
『ElseIf がうまく動作しません』(やそめ)
数値を入力していくsheetで、日付とIDの自動入力をしたくて以下のコードを書きました Aが日付 Bが個数 CがID です Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 2 Then If Target <> "" Then If .Offset(, -1).Value = "" Then .Offset(, -1).Value = .Offset(-1, -1).Value End If If .Offset(, 1).Value = "" Then .Offset(, 1).Value = .Offset(-1, 1).Value End If End If ElseIf .Column = 3 Then MsgBox "IDが変更されました" End If End With End Sub C列に入力したときにはメッセージボックスを表示されたいのですが その前の処理のせいか、B列に入力してもメッセージボックスが表示されてしまいます どのように修正したらよいでしょうか? < 使用 Excel:Microsoft365、使用 OS:Windows10 > ---- .Offset(, 1).Value = .Offset(-1, 1).Value ↑でC列に入力しているので C列を対象にした Worksheet_Changeイベントが発生して ElseIf .Column = 3 Then MsgBox "IDが変更されました" End If が実行されるからでは 最初に イベントを停止する Application.EnableEvents = False 最後に Excelのイベント停止の解除 Application.EnableEvents = True を入れておく (はてな) 2024/02/27(火) 17:35:31 ---- 表見てないからわからんけど、こういうこと? Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Dim rw As Long If Target.CountLarge > 1 Then If MsgBox("変更箇所が " & Target.CountLarge & " 個あります。処理を続けますか?", vbYesNo) <> vbYes Then Exit Sub End If End If Application.EnableEvents = False For Each r In Target rw = r.Row If r.Value <> "" And rw > 1 Then Select Case r.Column Case 2 'B列 If Cells(rw, "A").Value = "" Then Cells(rw, "A").Value = Cells(rw - 1, "A").Value End If If Cells(rw, "C").Value = "" Then Cells(rw, "C").Value = Cells(rw - 1, "C").Value End If Case 3 'C列 MsgBox "IDが変更されました" End Select End If Next r Application.EnableEvents = True End Sub (稲葉) 2024/02/27(火) 17:41:05 ---- ありがとうございます Application.EnableEvents = False 最後に Excelのイベント停止の解除 Application.EnableEvents = True はどのタイミングでしょうか? イベントを止めると .Offset(, 1).Value = .Offset(-1, 1).Valueで C列に処理したいときにも止まってしまいませんか? (やそめ) 2024/02/27(火) 18:44:10 ---- 話が進んでいるようですが何点か。 ■1 ChangeイベントのTargetは複数セル(とびとびの場合も含む)になることがありうるので、Target.Columnで判定するのは非推奨です。 ■2 さらにとびとびの複数セルの場合↓で問題が発生します。 .Offset(, -1).Value = .Offset(-1, -1).Value ■3 よって、たとえば↓のようにIntersectメソッドを使って判定することをお勧めします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRNG As Range, bufRNG As Range Set bufRNG = Intersect(Columns(3), Target) '変更したセルのうちC列のものを取り出す If Not bufRNG Is Nothing Then '取り出されたものがあれば処理 For Each MyRNG In bufRNG If MyRNG.Value <> "" Then If MyRNG.Offset(, -1).Value = "" Then MyRNG.Offset(, -1).Value = MyRNG.Offset(-1, -1).Value End If If MyRNG.Offset(, 1).Value = "" Then MyRNG.Offset(, 1).Value = MyRNG.Offset(-1, 1).Value End If End If Next MyRNG End If If Not Intersect(Columns(2), Target) Then ''変更したセルにB列のセルが含まれているか判定 MsgBox "IDが変更されました" End If End Sub (もこな2 ) 2024/02/27(火) 19:39:18 ---- 失礼。上記だと、B列とC列が逆ですね。 他にも手を加えたので修正版を提示します。 Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRNG As Range, bufRNG As Range '▼変更したセルのうちB列のものを取り出す Set bufRNG = Intersect(Range("B2:B" & Rows.Count), Target) If Not bufRNG Is Nothing Then '取り出されたものがあれば処理 For Each MyRNG In bufRNG If MyRNG.Value <> "" Then If Cells(MyRNG.Row, "A").Value = "" Then Cells(MyRNG.Row, "A").Value = Cells(MyRNG.Row - 1, "A").Value End If If Cells(MyRNG.Row, "C").Value = "" Then 'イベントを止めておかないと↓が実行されるたびにメッセージが表示されることになる Cells(MyRNG.Row, "C").Value = Cells(MyRNG.Row - 1, "C").Value End If End If Next MyRNG End If If Not Intersect(Columns(3), Target) Then '書き換えがあったセルにC列のセルが含まれているか判定 MsgBox "IDが変更されました" End If End Sub (もこな2 ) 2024/02/27(火) 20:42:17 ---- ありがとうございます 'イベントを止めておかないと↓が実行されるたびにメッセージが表示されることになる Cells(MyRNG.Row, "C").Value = Cells(MyRNG.Row - 1, "C").Value どの処理でイベントがとまっているのですか? (やそめ) 2024/02/27(火) 21:07:24 ---- >どの処理でイベントがとまっているのですか? わたしが提示したものは止めてません。(試せばわかるハズ) なお、後だしになって申し訳ないけど、説明のための提示であって完成品プレゼントの意図はないです。 もし、理屈は抜きにして思った通りの動きをするものが欲しいだけなら、別の回答者さんの方がよいとおもいますので、私のコメントは忘れてください。 (もこな2 ) 2024/02/27(火) 21:35:19 ---- 節操がない ↓ https://www.moug.net/faq/viewtopic.php?t=82676 (KGB) 2024/02/28(水) 10:29:33 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/202402/20240227164655.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97055 documents and 608272 words.

訪問者:カウンタValid HTML 4.01 Transitional