查找并返回指定工作表行中的.Text数据类型的第一个实例

时间:2016-02-19 18:46:20

标签: excel-vba vba excel

我想搜索特定的行并将变量分配给该行中包含的文本字符串的第一个实例。字符串可以是任何文本字符串;它只需要是数据类型.text。我试过这个:

dim firstText as string
dim rowNum as integer

firstText = sheets("Sheet1").Rows(rowNum).Find(What:=Format(vbString))

例如,如果行包含:123," apple"," pear"和-456,然后该函数将返回遇到的第一个文本字符串,在这种情况下," apple"

使用循环的替代方法:

dim firstText as string
dim rowNum as integer
dim i as integer
const stopCol = 100

For i = 1 To stopCol
    If VarType(Cells(rowNum, i)) = vbString Then
        firstText = Cells(rowNum, i)
        GoTo TheEnd
    End If
Next

TheEnd:

这也不起作用。

1 个答案:

答案 0 :(得分:2)

我同意@ Scott对你的问题的评论;检查单元格是否格式化为文本很可能不想要,因为您可以输入" = 5"单击一个单元格,然后单击格式作为文本 - 您也可以键入" =" Hello""并格式化为数字。

也许相反,您想要检查特定单元格的值是否实际为数字,如下所示:

Sub duplicateSheets()

    Dim rowNum As Integer
    Dim searchRange As Range
    Dim testCell As Range
    Dim firstText As String

    rowNum = 10
    Set searchRange = Intersect(Sheets(2).UsedRange, Sheets(2).Range(rowNum & ":" & rowNum))

    For Each testCell In searchRange
        If Not (IsNumeric(testCell.Value)) Then
            firstText = testCell.Value
            Exit For
        End If
    Next

End Sub

这基本上就是你所拥有的(使用不同的方法来确定范围和循环),但它不是检查单元格的格式化类型,而是检查单元格中的数据是否通过作为一个数字。它获取传递的第一个单元格的值。