2013-03-18 4 views
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 

Привет всем, у меня есть приведенный выше код, он должен установить переменную в начале местоположения для первой ячейки, а на конечной позиции она устанавливает вторую переменную, а затем заполняет ячейки от SLR до ELR, однако он не работает и не предоставляет мне сообщение об ошибке, любые идеи?Почему мой код не заполняется?

+0

Когда код должен работать? прямо сейчас, вы его запускаете, когда что-то на листе изменяется, поэтому он не будет работать, пока вы не сделаете значение ячейки = «START-LOCATION» или «END-LOCATION» –

+0

@ joseph4tw Спасибо, это предназначенная конструкция , – SCGB

+1

где и какая ошибка поднята –

ответ

0

Попробуйте изменить следующее:

SLR= Activecell.Address 

в

Set SLR = Activecell 

и сделать то же самое для ELR:

Set ELR = Activecell 
0

On Error Resume Next всегда плохая идея. Если бы я был королем мира, я бы сделал эту команду незаконной, обработчик ошибок должен быть, когда произойдет что-то неожиданное, что приведет к сбою вашего кода.

Самая важная вещь, связанная с вашим макросом, заключается в том, что данные, которые пользователь получает в конце, являются правильными. Если это означает, что когда код выходит из строя, и пользователь вызывает вас, то это то, что требуется. Но если On Error Resume Next означает, что никто никогда не узнает, произошел ли сбой вашего кода, и никто не узнает, что данные ошибочны.

Никогда не использовать On Error Resume Next !!!!!

Что касается этого бита кода, вы узнаете больше о своей проблеме, если вы удалите On Error Resume Next.

+0

К счастью, вы не король мира. На самом деле, 'On Error Resume Next' может быть действительно полезным при использовании с' If Err.Num <> 0' в некоторых конкретных ситуациях, но вы правы, говоря, что этого следует избегать в большинстве случаев. – dnLL

Смежные вопросы