0

因此,尽管我觉得有必要提到我已经在这里发表了几篇关于这个项目的帖子,但我已经在这方面取得了一些进展:

对于那些没有读过我之前的帖子的人,我有一个在线会员网站的名称数据库,其中大部分的性别已经从另一张纸上的 6,000 个名字长列表中分配了 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:需要对象”消息,但我相当确定我的代码中存在其他错误,因此请随时指出这些错误。

4

2 回答 2

0

我知道了!这主要是将 GenderText 和 NamesText 更改为范围类型变量的问题。但是,当我在代码中添加新功能时,我将来可能会有其他问题。;)

于 2013-05-20T21:22:14.697 回答
0

如果 Doc.getElementsByTagName("b").Item(1).innerText = "这是一个男孩!" 然后 theGenderText.Value = "F" ElseIf Doc.getElementsByTagName("b").Item(1).innerText = "这是一个女孩!" 然后 GenderText.Value = "M"

当它说它是一个男孩时,不应该 theGenderText.Value = "M"(Male) 而不是 "F"(Female)!?ElseIf 部分的相同观察结果......

同样在 If 语句的第一部分中,您引用的是theGenderText,但 ElseIf 显示的是GenderText(没有“the”)...可能这是错误的原因..您还可以提及哪一行代码导致错误???

于 2013-05-20T07:05:52.770 回答