L'errore di run-time 13 si distriggers quando CLng ha una string di text

Sono abbastanza nuovo per eccellere vba e vorrei chiedere come posso cambiare questo codice per modificare i valori di H3: H7 (1,2,3,4,5) a (1F, 2F, 3F, 4F, 5F) per fare funzionare la macro?

Se cerco di modificare per esempio il valore della cella H3 a "1F", ottengo "Errore di run-time" 13: Tipo non corrispondente "perché indovino che il primo codice di seguito non sia in grado di gestire la string di text, ma come devo modificare il codice?

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

Foglio di Excel (Schermata)

 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 Sub CommandButton3_Click () 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 Uscita Funzione 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 

  • Errore di esecuzione "424": Oggetto richiesto durante la copia di dati da una cartella di lavoro a quella triggers
  • Nuovo errore di ora di esecuzione 1004 in un model simile
  • Errore di runtime -2147319784 (0x80028018) con Excel 2013 in Windows 8
  • Errore di file autosaved su file Excel Macro Abilitato
  • Errore di runtime sconosciuto di VbScript durante l'apertura della cartella di lavoro
  • Errore 1004 AutoFill
  • Errore di runtime 13: Tipo non corrispondente
  • Errore di run-time nel metodo "Copia"
  • One Solution collect form web for “L'errore di run-time 13 si distriggers quando CLng ha una string di text”

    Per consentire che i valori siano text come "1F" , è necessario

    • Modificare il numero returnedNumber As Long da returnedNumber As String e
    • Modifica CLng(words(iWord, 2)) per essere CStr(words(iWord, 2))
    • Modificare il number As Long per essere il number As String
    Microsoft Office Excel Spreadsheet è il miglior software di Office, Excel VBA e formule Excel rendono il foglio di calcolo più veloce.