(Excel VBA)变量不起作用并显示“对象必需错误”

时间:2018-06-06 04:07:46

标签: excel vba

所以我正在测试一个简单的程序来找到字母e并将其从单元格中删除。除了变量A即使Cell(1,1)不起作用也不起作用。

Sub remove()
  A = Cells(1, 1)
  pos = InStr(A, "e")
       'A works for pos though I don't know why
  'A.characters(pos,1).delete'
       'The above doesn't work for some reason'   
  Cells(1, 1).Characters(pos, 1).delete    
End Sub

我尝试过的事情

  • Dim A as Range
  • 使用范围

也很抱歉没有更具体的问题。虽然我正在努力,但我不确定VBA和编码背后的术语

2 个答案:

答案 0 :(得分:1)

Jeeped打败了我。 VBA不是强类型的,因此除非您通过使用' Set'明确告诉它您要分配的变量是对象类型,否则A所采用的值在这种情况下是单元格的内容而不是细胞本身。

你甚至不需要暗淡它,尽管这是一个好习惯。

Sub remove()
  Set A = Cells(1, 1) 'Need to use Set
  pos = InStr(A, "e")

  'This works just fine now
  A.characters(pos,1).delete'
End Sub

答案 1 :(得分:0)

您要将单元格(1,1).value分配给A.如果您想要单元格(1,1)的范围对象属性(例如'字符'),则需要设置a range-type var to cells(1,1)。

Sub remove()
  dim A as range
  set A = Cells(1, 1)
  pos = InStr(A.value, "e")
  A.characters(pos,1).delete'   
End Sub