[英]Type Mismatch Run Time error 13 for excel VBA
我需要編寫一些函數來接受Range作為輸入,並且我需要返回第一個非空單元格的值。 我在一張Excel工作表中嘗試過,發現非空單元格工作正常。 當我嘗試使用項目excel文件時,該文件無法正常工作。 基本上對於Range的Find方法,我會遇到運行時錯誤13。檢查下面的代碼,讓我知道是什么問題。 我什至注意到,當我將Range.Row屬性設置為“ Row”時,在代碼中將其作為行(在下面的代碼中請參閱Target.row)。
Sub Btn_GenerateChartClicked()
If Range("E9") = "Scatter" Then
MsgBox "Scatter is selected"
Dim str As String
Dim rng As Range
Set rng = Range("B12:I12")
str = FindNonEmptyCellFromRange(rng)
' MsgBox str
Else
MsgBox "Bar is selected"
End If
End Sub
Function FindNonEmptyCellFromRange(Target As Range) As String
Dim ws As Worksheet
Set ws = Sheets("Benchmarking_Project")
Dim foundRange As Range
Set foundRange = Target.Find("*", Cells(Target.row, 1), xlFormulas, , xlByColumns, xlPrevious)
'Dim cellValue As String
'cellValue = foundRange.Value
FindNonEmptyCellFromRange = "Test"
'cellValue
End Function
您find
目標。
使用Cell.Find
,然后一旦選擇了單元格,請使用Target.Address
獲取單元格的地址
因此,您的CellValue
將變為:
CellValue = FoundRange.Address
雖然,您的問題有點模糊,因為您仍然不使用該UDF做任何實踐
您的問題沒有提供足夠的詳細信息,並且函數調用未返回非空單元格。 無論發生什么情況,您的函數將僅返回Test。
無論如何,遍歷代碼時,您的范圍中只有一行。
問題似乎與以下代碼有關
Set foundRange = Target.Find("*", Cells(Target.row, 1), xlFormulas, , xlByColumns, xlPrevious)
無需指定After Parameter Cells(Target.row, 1)
從用戶界面進行搜索時,參數對應於活動單元格的位置。 注意,After必須是該范圍內的單個單元格。 請記住,搜索是在此單元格之后開始的; 直到方法回繞到該單元格之前,不搜索指定的單元格。 如果不指定此參數,則搜索將在范圍左上角的單元格之后開始。
嘗試將代碼更改為
Set foundRange = Target.Find("*", , xlFormulas, , xlByColumns, xlPrevious)
以下代碼可能對您有用
Sub Btn_GenerateChartClicked()
If Range("E9") = "Scatter" Then
MsgBox "Scatter is selected"
Dim str As String
Dim rng As Range
Set rng = Range("B12:I12")
str = GetFirstNonEmptyCell(rng)
' MsgBox str
Else
MsgBox "Bar is selected"
End If
End Sub
Public Function GetFirstNonEmptyCell(Target As Range)
Dim startCell As Range, firstNonEmptyCell As Range
For Each c In Target.Cells
If Trim(c.Value) <> "" Then
Found_Address = c.Address
Exit For
End If
Next
GetFirstNonEmptyCell = Found_Address
End Function
Ian關於在Find方法中不使用Cells(Target.Row,1)的建議是正確的。 我錯了 因為我將列索引設置為1,但是應該將其設置為2,因為我選擇的范圍是從列B出發的,這意味着列索引2。所以我實際上出錯了,因為在該范圍內沒有列索引1。 因此,如果我在上面提到的電話中放入2而不是1,那么它工作正常。 是的,您的權利是我沒有實際返回最后一個非空單元格的值,因為那是我不斷更改的R&D代碼。 因此在發布時,我忘記更改它。 謝謝大家的答復
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.