私は現在自分の日に時計を作るのに自己製のスプレッドシートを使用しています。新しいアクティビティを挿入するたびに、最後のアクティビティで私にかかる時間を計算する必要があります。メソッドシートのモジュール内でオブジェクト '_Global'の 'Intersect'が失敗しました - ActiveSheetが認識されません
毎日新しいスプレッドシートを作成するときと同じように正常に動作しますが、スプレッドシートを毎月ファイルにまとめることを検討しています。
自分のタスクを要約したピボットテーブルを更新する同じスプレッドシートにマクロボタンがあります。
私はワークシートのコピーを作成し、ピボットテーブルを更新しようとしたら、残念ながら、それは私にエラーメッセージを表示します。次のようにMethod 'Intersect' of object '_Global' failed
私の現在のコードは次のとおりです。
Private Sub Worksheet_Change(ByVal Target As Range)
'Stamp Date
Dim WorkRng As Range
Dim Rng As Range
Set WorkRng = Intersect(ActiveSheet.Range("B:B"), Target)
If Not WorkRng Is Nothing Then
Application.EnableEvents = False
For Each Rng In WorkRng
If Not VBA.IsEmpty(Rng.Value) Then
If Rng.Offset(-1, 0).Value = "Start" Then
Rng.Offset(0, 1).Value = Rng.Offset(-1, 1)
Else: Rng.Offset(0, 1).Value = Now
Rng.Offset(0, 1).NumberFormat = "h:mm AM/PM"
End If
Else
Rng.Offset(0, 1).ClearContents
End If
Next
Application.EnableEvents = True
End If
'Time Format
If Target.Cells.Count > 1 Or Target.HasFormula Then GoTo errHandler
On Error Resume Next
If Not Intersect(Target, Range("C3:C33")) Is Nothing Then
Application.EnableEvents = False
Target.NumberFormat = "H:MM AM/PM"
Application.EnableEvents = True
End If
On Error GoTo errHandler
If WorkRng.Offset(0, 1) > 0 Then
WorkRng.Offset(1, 0).Select
End If
Exit Sub
errHandler: ActiveCell.Select
End Sub
デバッグハイライト:Set WorkRng = Intersect(ActiveSheet.Range("B:B"), Target)
VBAの初心者であるため、これらのコードは主に別の場所からコピーされます。その結果、私は何が悪くなったのか分からない。どんな援助も非常に高く評価されるでしょう!
あなたがシートのモジュールの内部でActiveSheet
を使用することはできません
は、「別のActiveSheetの問題」のように見えます別のワークシートから2つ以上の範囲を交差しようとします。ここではエラーです。可能であれば、 'ActiveSheet'を取り除いてください。ところで、シートの新鮮なコピーがActiveSheetになったときに問題が発生したと思います。この時点から、 'ActiveSheetがTarget.Worksheetならば'を、 'そうでなければ' Target.Worksheet.Activate'を比較しようとすることができます(これをしないでください)。 – CommonSense
あなたの 'Private Sub Worksheet_Change(ByVal Target As Range)'サブをどこに置いていますか? – user3598756