Excel VBA匹配函数不匹配,尽管源中有搜索值
工作表中确实包含字符串值,我不知道为什么匹配失败。我试过在工作表上使用匹配功能,它很有效。这可能是某种参考问题吗?工作表中的单元格似乎没有奇怪的空白。如果有人能帮我做到这一点,那就太好了:Excel VBA匹配函数不匹配,尽管源中有搜索值,excel,vba,Excel,Vba,工作表中确实包含字符串值,我不知道为什么匹配失败。我试过在工作表上使用匹配功能,它很有效。这可能是某种参考问题吗?工作表中的单元格似乎没有奇怪的空白。如果有人能帮我做到这一点,那就太好了: 公共子TestMe() 将ws设置为工作表:设置ws=工作表(1) Dim StartRow作为变体 StartRow=Application.Match(“宣布日期”,ws.Range(“A:A”),0) 如果IsError(StartRow),则退出Sub 如果StartRow
公共子TestMe()
将ws设置为工作表:设置ws=工作表(1)
Dim StartRow作为变体
StartRow=Application.Match(“宣布日期”,ws.Range(“A:A”),0)
如果IsError(StartRow),则退出Sub
如果StartRow<2,则退出Sub
ws.Range(“A1:A”&StartRow-1).EntireRow.Delete
端接头
- 将
声明为StartRow
,因为如果变量
不存在,它将返回错误李>公告日期
- 可以使用iError(StartRow)检查,如果不是这样,则退出李>
,以避免StartRow为1时可能出现的错误李>如果StartRow<2,则需要退出Sub
ws
与屏幕截图是同一张图纸吗?确保在添加了整个代码的A80中,字符串的末尾没有多余的空格。不应该是空白问题,因为我尝试在工作表本身上使用match函数。这有点错误-Set ws=ExtractRawDivFromAastocks(StockCode)
代码要求函数做太多事情。例如,添加工作表、返回工作表、从查询表中获取数据并刷新工作表。最后返回一个工作表。重构它是个好主意。只是想知道-你能像这样调用函数CleanAastocksDiv StockCode,ws
而不是调用CleanAastocksDiv(StockCode,ws)
?当代码搜索单元格时,查询没有完成!
Option Explicit
Sub ExtractDivFromAastocks()
Dim StockCode As String, Anchor As String
Dim ws As Worksheet
StockCode = "02800"
Anchor = "Announce Date"
Set ws = ExtractRawDivFromAastocks(StockCode)
Call CleanAastocksDiv(StockCode, ws)
End Sub
Private Function ExtractRawDivFromAastocks(StockCode As String)
Dim WsFound As Boolean
Dim i As Integer
WsFound = False
For i = 1 To Sheets.Count():
If Worksheets(i).Name = StockCode Then
WsFound = True
End If
If WsFound = True Then
Exit For
End If
Next i
If WsFound = True Then
Application.DisplayAlerts = False
Worksheets(StockCode).Delete
Application.DisplayAlerts = True
End If
Dim ws As Worksheet
Dim qt As QueryTable
Dim Website As String, Aastock As String
Aastock = "http://www.aastocks.com/en/stocks/analysis/dividend.aspx?symbol="
Website = Aastock & StockCode
Set ws = Sheets.Add(After:=Worksheets(Worksheets.Count()))
ws.Name = StockCode
Set qt = ws.QueryTables.Add( _
Connection:="URL;" & Website, _
Destination:=ws.Range("A1"))
With qt
.RefreshOnFileOpen = True
.Refresh
End With
Set ExtractRawDivFromAastocks = ws
End Function
Private Sub CleanAastocksDiv(StockCode As String, ws As Worksheet)
Dim StartRow As Integer
StartRow = Application.Match("Announce Date", ws.Range("A:A"), 0)
ws.Range("A1:" & _
ws.Cells(StartRow - 1, ws.Columns.Count()).Address).EntireRow.Delete
End Sub
Public Sub TestMe()
Dim ws As Worksheet: Set ws = Worksheets(1)
Dim StartRow As Variant
StartRow = Application.Match("Announce Date", ws.Range("A:A"), 0)
If IsError(StartRow) Then Exit Sub
If StartRow < 2 Then Exit Sub
ws.Range("A1:A" & StartRow - 1).EntireRow.Delete
End Sub