根据在任何单元格中输入的数字选择范围

时间:2015-07-06 11:43:38

标签: excel vba excel-vba

到目前为止,我已经获得了VBA代码:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Value > 0 Then Target.Resize(, Application.Min(400, 2 * Target.Value)).Select

End Sub

这就是我想要的;根据我在工作簿中的任何位置写入的数字(* 2,最大限制为400个单元格)选择范围。我需要帮助的问题是,如果我键入内容(文本)或删除某些内容,我会收到运行时错误13。关于如何修改此代码的任何想法将不胜感激。

//克里斯

2 个答案:

答案 0 :(得分:0)

您需要阻止下一步操作重新触发相同的宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Value > 0 Then
        Target.Resize(, Application.Min(400, 2 * Target.Value)).Select
    End If
End Sub

答案 1 :(得分:0)

这是我最终的VBA。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Error_handler:
If Val(Target.Cells(1).Value) > 0 Then Target.Resize(, Application.Min(400,    2 * Target.Value)).Select
Exit Sub
Error_handler:
MsgBox "Error Handler"
End Sub

这将选择单元格值指定的范围,并允许进行文本和其他编辑,以及通过显示MsgBox“错误处理程序”来处理最终错误