VBA“不是对象错误”

几乎所有其他语言,都没有理由这样抛出一个错误:

Sub EnsureLength(ByRef Cell As Range) If InRange(Cell, Range("A2:A99999")) Then Dim Length As Integer Length = 20 Dim Text As String Text = Cell.Text If Len(Cell.Text) > Length Then Cell.Text = Left(Text, Length) 'Expected an Object. End If ElseIf InRange(Cell, Range("B2:B99999")) Then End If End Sub 

通过快速查看您的代码,我会推荐您使用.value而不是.text

快速提示未来,

.text返回string的“单元格”表示,所以它有时可能会返回#####和奇怪的string。

.value给你的单元格(string,整型,布尔等等)的“核心”价值,所以通常使用VBA时,这是一个更好的select!