类型不匹配错误13在获取值的长度时
Dim mm As String
Dim lstRow As Integer
Set ws1 = ast.Sheets("Exit")
lstRow = ws1.Range("S" & ws1.Rows.Count).End(xlUp).Row
Dim i As Integer
For i = 2 To lstRow
**If Len(ws1.Range("S" & i).Value) = 6 Then**
mm = Left(ws1.Range("s" & i).Value, 3)
ws1.Range("T" & i).Value = mm
ws1.Range("T" & i).Interior.Color = vbRed
End If
Next
我打算带上3列字母的S列值,并将这些字母表带出红色的T列。但我在**行中遇到类型不匹配错误。 ast是文件名,ws1是工作表名称。类型不匹配错误13在获取值的长度时
嗯,我想这可能与它有关系吗?
Dim lstRow As Integer
VS
lstRow = ws1.Range("S" & ws1.Rows.Count).End(xlUp).Row
是它的范围或整数?在线调试你的B/C它告诉看它的一种方式,但你用另一种方式
'ws1.Range(“S”&ws1.Rows.Count).End(xlUp).Row'是一个数字值。它返回给定地址的NUMBER行。 ;) –
好抓。我想出于某种原因,它比实际上更明显:/ –
那么什么是正确的代码呢? – Nitin
我没有足够的评论声望。你可以请添加行Option Explicit
到您的代码的顶部。
请Dim ws1 As Excel.Worksheet
请通过代码与发生故障的线路断点和手表踩ws1.Range("S" & i).Value
回到这里,告诉我们的值是什么声明WS1。
您也可以尝试打印Len(ws1.Range("S" & i).Value)
随着您的代码正在运行故障排除。
如果您在问题行之前放置了'Debug.Print Len(ws1.Range(“S&i).Value),那么在立即窗口上会出现什么? – Smandoli
对我来说根本没有意义...仍然尝试将所有“整数”更改为“长”[为什么使用整数而不是长](http://stackoverflow.com/questions/26409117/why- use-integer-instead-of-long/26409520#2640952)...可能有一个无声的溢出...也尝试在你的前面有一个Debug.Print ws1.Range(“S”&i).Value' error-line ...如果没有错误,那么'Len'不会出错(理论上) –
@Smandoli只是一个提示:在直接窗口中,可以用'?'代替'Debug.Print' :) –