Range类的Delete方法失败

时间:2016-07-15 11:36:55

标签: vba autocomplete delete-row bloomberg autofilter

我有一些代码,我使用索引(匹配)基于带有下拉菜单的单元格。当用户选择某个安全性时,输出一个CUSIP,然后从bloomberg粘贴公式,将数据输出到excel中。

然后我继续创建一个表,但是想使用autofilter过滤表并删除那些不符合过滤条件的行,但这似乎不是因为某些原因而起作用的!我还输入了一个activex控制表单按钮,这样当用户双击下拉菜单时,他们可以搜索安全性并自动完成。

请帮助,谢谢!

Sub INDEX_MATCH_CUSIP_TO_SHORTDESCRIPTION()

 Application.ScreenUpdating = False
 Application.Calculation = xlCalculationManual

 Sheets("Sheet4").Range("B3:E100").Delete

 Range("B2").Select
 test = Application.WorksheetFunction.Index(Sheets("DEX Spread Report (Corp)").Range("B7:B1600"),           Application.WorksheetFunction.Match(ActiveCell.Value, Sheets("DEX Spread Report (Corp)").Range("D7:D1600"), 0), 1)
 ActiveCell.Offset(1, 0).Value = test

 Application.ScreenUpdating = True
 Application.Calculation = xlCalculationAutomatic

 End Sub

Sub BBRG_FORMULAS_FOR_SECURITY()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim CUSIPS As String

    Sheets("Sheet4").Select
    Range("B2").Select

 CUSIPS = ActiveCell.Offset(1, 0).Value

ActiveCell.Offset(2, 0).Value = "=BDS(""" & CUSIPS & """ & ""& CUSIP"",""ALL_HOLDERS_PUBLIC_FILINGS"", ""STARTCOL=1"", ""ENDCOL=1"")"
ActiveCell.Offset(2, 1).Value = "=BDS(""" & CUSIPS & """ & ""& CUSIP"",""ALL_HOLDERS_PUBLIC_FILINGS"", ""STARTCOL=6"", ""ENDCOL=8"")"


Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic


End Sub


Sub Create_Table_and_AutoFilter()

 Dim wksDest As Worksheet
 Dim LastRow As Long
 Dim rng     As Range
 Dim rngDelete As Range

Sheets("Sheet4").Select
Set wksDest = Worksheets("Sheet4")

 LastRow = Cells(Rows.Count, 2).End(xlUp).row
 LastRow1 = Cells(Rows.Count, 2).End(xlUp).row

 ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(4, 2), Cells(LastRow, 5)), , xlYes).Name = "HoldersTable"

With wksDest
Set rng = Range(Cells(4, 2), Cells(LastRow1, 5))
rng.AutoFilter Field:=1, Criteria1:="<=1000"
Set rngDelete = rng.SpecialCells(xlCellTypeVisible)
rng.AutoFilter
rngDelete.EntireRow.Delete
End With

End Sub

1 个答案:

答案 0 :(得分:0)

您最有可能尝试删除表格标题

尝试使用以下代码段将With wksDest中的代码替换为End With

With wksDest.Range(Cells(4, 2), Cells(LastRow1, 5))
    .AutoFilter Field:=1, Criteria1:="<=1000"
    If Application.WorksheetFunction.Subtotal(103, .Cells.Resize(,1)) > 1 Then .offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    .AutoFilter
End With