1

Worksheet_Change現在 でイベントを開催していますSheet Module Level。問題は、このシートを時々クリアできるようにしたいということです。ただし、シートをクリアすると、オーバーフローが発生します。

Private Sub Worksheet_Change(ByVal Target As Range)
    'This is the line causing the problem because clearing the whole sheet causes the count to be massive
    If Target.Count = 1 Then
        If Target = Range("A4") Then
            If InStr(LCase(Target.Value), "loaded") <> 0 Then
                Range("A5").FormulaArray = "=My_Function(R[-1]C)"
            End If
        End If
    End If
End Sub

私は次のことを達成しようとしています:

ボタンを押すとシートがクリアされ(既存の配列数式データが消去されます)、数式をシートに貼り付けて数式を呼び出します。数式はデータを Excel キャッシュに戻し、この数式 (A4) を含むセルを "loaded" という文字列に変更します。値が「読み込まれた」セルの変更を検出すると、以下の配列数式関数でCtrl+ Shift+と同等の処理を行い、データを表示します。Enter

4

1 に答える 1

0

xl2007+ を使用していると思いますか?

は値でTarget.Cells.CountあるLongため、ワークシート全体を選択すると、.Count小さすぎて結果を保持できません。

行を置換

If Target.Count = 1 Then   

If Target.Cells.CountLarge = 1 Then

使用しているので、これも見たいと思うかもしれませんWorksheet_Change

編集

他の2つのこと

1)

この行を置き換えることもできます

If Target = Range("A4") Then

If Not Intersect(Target, Range("A4")) Is Nothing Then

2)

この行

If InStr(LCase(Target.Value), "loaded") <> 0 Then

のように書くこともできます

If InStr(1, Target.Value, "loaded", vbTextCompare) Then
于 2013-02-08T12:30:24.917 に答える