2017-01-15 27 views
-1

我對excel vba很新,我想問一下如何改變這個代碼來修改H3:H7單元格(1,2,3,4,5 )值設置爲(1F,2F,3F,4F,5F)以使宏工作?

如果我嘗試修改例如H3單元格的值爲「1F」,我得到「運行時錯誤'13':類型不匹配」,因爲我猜下面的第一個代碼不能處理文本字符串,但我該如何修改代碼?當CLng有文本字符串時,運行時錯誤13不匹配

returnedNumber = CLng(words(iWord, 2)) // How should I modify to handle number and text string too? 

Excel Sheet (Screenshot)

Option Explicit 
Private Sub CommandButton3_Click() 
Dim cell As Range 
Dim words As Variant 
Dim word As String, number As Long 

words = Range("H3", Cells(Rows.Count, "G").End(xlUp)).Value 

For Each cell In Range("J3", Cells(Rows.Count, "J").End(xlUp)).SpecialCells(xlCellTypeConstants, xlTextValues) 
    If FindWord(cell.Value, words, word, number) Then 
     cell.Offset(, 3).Resize(, 2).Value = Array(word, number) 
    End If 
Next 
End Sub 
Function FindWord(sentence As String, words As Variant, returnedWord As String, returnedNumber As Long) As Boolean 
Dim iWord As Long 
Dim word As String 

For iWord = LBound(words, 1) To UBound(words, 1) 
    word = CStr(words(iWord, 1)) 
    If InStr(sentence, word) Then 
     FindWord = True 
     returnedWord = word 
     returnedNumber = CLng(words(iWord, 2)) 
     Exit Function 
    End If 
Next 
End Function 

回答

0

要允許值是文本,如"1F",你需要

  • 變化returnedNumber As LongreturnedNumber As String,並
  • 變化CLng(words(iWord, 2))CStr(words(iWord, 2))
  • 變更number As Long變爲number As String
+0

非常感謝!這很有幫助,我已將「Dim number As Long」更改爲「Dim number As String」,現在它也可以使用!祝你今天愉快! –

+0

@GálTamás - 發現 - 我忽略了那個。 – YowE3K

相關問題