我想搜索特定的行并将变量分配给该行中包含的文本字符串的第一个实例。字符串可以是任何文本字符串;它只需要是数据类型.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:
这也不起作用。
答案 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
这基本上就是你所拥有的(使用不同的方法来确定范围和循环),但它不是检查单元格的格式化类型,而是检查单元格中的数据是否通过作为一个数字。它获取不传递的第一个单元格的值。