2013-05-20 173 views
0

所以,雖然我覺得有必要提一下,我已經在這裏就這個項目發表了幾篇文章,但我已經取得了一些進展:VBA - 「運行時錯誤424:需要的對象」

對於那些沒有閱讀過我以前的帖子的人,我有一個在線會員網站的名稱數據庫,其中大部分性別已從另一張紙上的6000個名單長列表中分配VLOOKUP。其餘的則是「ERR」,這是VB代碼接管並在性別猜測網站上搜索姓名並能夠返回「F」,「M」或「U」的點「(不知道)那些細胞。我在性別列中使用的函數如下:

= IF(ISERROR(VLOOKUP($ A41,NameDatabase!$ A $ 2:$ B $ 8000,2,FALSE)),「ERR」,VLOOKUP($ A41 ,NameDatabase $ A $ 2:$ B $ 8000,2,FALSE))

而且VBA代碼拿剩下的工作如下:

Sub DetermineGender() 

Dim dbsheet As Worksheet 
Set dbsheet = ThisWorkbook.Sheets("memberdata2") 

lr = dbsheet.Cells(Rows.Count, 1).End(xlUp).Row 

SelRow = Selection.Row 

'Gender (Column H) 
GenderText = dbsheet.Cells(SelRow, 8) 

'Names (Column A) 
NamesText = dbsheet.Cells(SelRow, 1) 

'Loop Routine 
For Row = 2 To lr 
If NamesText.Value = "ERR" Then 
Dim IE As New InternetExplorer 
IE.Visible = True 
IE.navigate "http://www.gpeters.com/names/baby-names.php?name=" & NamesText 
Do 
     DoEvents 
Loop Until IE.readyState = READYSTATE_COMPLETE 
Dim Doc As HTMLDocument 
Set Doc = IE.Document 
     If Doc.getElementsByTagName("b").Item(1).innerText = "It's a boy!" Then 
      theGenderText.Value = "F" 
     ElseIf Doc.getElementsByTagName("b").Item(1).innerText = "It's a girl!" Then 
      GenderText.Value = "M" 
     Else 
      GenderText.Value = "U" 
     End If 
End If 
Next 

End Sub 

我在幾乎絕對的初學者VBA,我的大部分代碼都是由4-5個不同的來源拼湊而成的。雖然我提到我得到了「運行時錯誤424:所需的對象」消息,但我確信我的代碼中存在其他錯誤,因此請隨時指出這些錯誤。

回答

0

我明白了!這主要是將GenderText和NamesText更改爲範圍類型變量的問題。但是,隨着我向代碼添加新功能,未來可能會有其他問題。 ;)

0

如果Doc.getElementsByTagName(「b」)。Item(1).innerText =「這是一個男孩!」然後 theGenderText.Value =「F」 ElseIf Doc.getElementsByTagName(「b」)。Item(1).innerText =「這是一個女孩!」然後 GenderText.Value = 「M」

不應該theGenderText.Value = 「M」,而不是 「F」(女),當它說,它是一個男孩(男)!???同樣觀察elseif的一部分...

此外,在if語句的第一部分,你闖民宅theGenderText,但elseif的的顯示GenderText(沒有「的」)......可能這是錯誤的原因..你也可以提到哪一行代碼會導致錯誤?

+0

我改變了性別,我仍然得到錯誤。 (我不知道「第一個」是如何放在第一個之後的,因爲它根本沒有出現在我的原始代碼中......)它並不告訴我哪一行是對錯誤負責的,只是通知我自己的錯誤。 – user2370064

+0

我也更改了如果NamesText.Value =「ERR」爲:GenderText.Value =「ERR」,但錯誤仍然存​​在。 – user2370064

相關問題