我正在VBA中尝试根据excel电子表格第一行中某个字符串的出现来选择一列。首先,我试图让代码搜索术语"键入"在电子表格的第一行,然后选择整个"类型"柱。从那里我一直在尝试将该列设置为变量,以便稍后在代码中调用它。抱歉,我不允许发布我工作过的代码,但不允许这样做。
好的,这是我到目前为止的代码。它在第一行搜索" type"并找到该单元格并选择它。我无法将变量myCol分配给整个列。我一直得到一个"对象不支持此属性或方法错误"。很抱歉,如果这是一个明显的修复,但我对VBA来说真的很新。
Function ColSearch() As Integer
Sheets("CS-CRM Raw Data").Select
Sheets("CS-CRM Raw Data").Unprotect
Dim myCol As Range
Cells.Find(What:="type", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Set myCol = ActiveCell.EnitreColumn
ColSearch = myCol
End Function
编辑:好的,这是我编辑的代码,用于搜索列,选择一个标记类型,然后将其设置为等于变量。现在我得到一个"对象变量或者没有设置块变量"每次运行都会出错。
Function ColSearch() As Range
Sheets("CS-CRM Raw Data").Select
Sheets("CS-CRM Raw Data").Unprotect
Dim myCol As Range
myCol = Worksheets("CS-CRM Raw Data").Cells.Find(What:="type", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Column
myCol = ColSearch
End Function
答案 0 :(得分:0)
这个解决方案对我有用:
Function ColSearch2() As Integer
ColSearch2 = Worksheets("CS-CRM Raw Data").Cells.Find(What:="type", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Column
End Function
问题在于使用" EntireColumn"。
根据文档,"返回一个Range对象,该对象表示包含指定范围的整个列(或列)。只读。",而不是列索引。
http://msdn.microsoft.com/en-us/library/aa199727(v=office.10).aspx
编辑:刚看到主线程中的编辑。类型不匹配是将Range对象作为整数返回。