如何在行中搜索字符串,然后在VBA中选择该字符串的列

时间:2014-06-27 15:36:18

标签: excel vba

我正在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

1 个答案:

答案 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对象作为整数返回。