0
Dim SLR As Range
Dim ELR As Range

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
On Error Resume Next


Select Case UCase(Target.Value)

Case "START-LOCATION"
    Target.Offset(0, 0).Select
    Selection.ClearContents
    SLR = ActiveCell.Address
    Target.Offset(-1, 1).Select



Case "END-LOCATION"
    Target.Offset(0, 0).Select
    Selection.ClearContents
    ELR = ActiveCell.Address
    Target.Offset(0, -1).Select
    ActiveSheet.Range(SLR, ELR).FillDown

End Select
End Sub

こんにちは、私は上記のコードを持っています。最初のセルの開始位置に変数を設定し、終了位置に2番目の変数を設定してから、セルをSLRからELRに入力しますが、機能していません。エラーメッセージやアイデアはありませんか?

4

2 に答える 2

0

以下を変更してみてください。

SLR= Activecell.Address 

の中へ

Set SLR = Activecell

ELRについても同じようにします。

Set ELR = Activecell
于 2013-03-18T15:52:35.757 に答える
0

エラー時再開次は常に悪い考えです。もし私が世界の王様だったら、このコマンドを違法にするでしょう。エラーハンドラーは、コードをクラッシュさせるような予期しないことが起こったときのためのものでなければなりません。

マクロで最も重要なことは、ユーザーがマクロの最後に取得するデータが正しいことです。それがコードがクラッシュし、ユーザーがあなたに電話をかけたときにそれが必要なことを意味する場合。ただし、On Error Resume Nextがあるということは、コードがクラッシュしたかどうかを誰も知らず、データが間違っていることを誰も知らないことを意味します。

On ErrorResumeNextを使用しないでください!!!!!

このコードについては、On Error Resume Nextを削除すると、問題について詳しく知ることができます。

于 2013-03-20T15:17:26.357 に答える