2017-09-27 61 views
0

我的情況是我從MS Word打開Workbook在那裏我找到了一些文字,並刪除找到的文本的整個行。爲了實現這一點,我使用了具有複選框和按鈕的Userform。通過所有的複選框和下面循環中的代碼,如果C.Value回報True它按CEEMEA按鈕進行操作。打開工作簿從MS-Word對象,並查找使用文本複選框,刪除整個行,然後關閉工作簿

我有Excel Object命名Xc問題。

我第一次運行CEEMEA宏它正常運行(打開工作簿 - >查找文本 - >刪除行 - >關閉工作簿等);

,但第二次,它返回錯誤Run-time Error '13': Type mismatch,到目前爲止,我認爲可能還有一些東西留在第一次運行,我沒有退出/關閉/設置爲空,(複製工作簿)

我檢查了所有拼寫,一切都正確。

Xc.Quit底,和Set Xc= Nothing

我不明白它出錯的地方。我第一次運行的時候可能有些東西我沒有QuitSetNothing。我把整個代碼放在下面。好心幫...

如果沒有做這個工作好心提示的方式尤爲明顯。

Dim Xc As Object 
Set Xc = CreateObject("Excel.Application") 
Xc.Visible = True 
Set Wb = Xc.Workbooks.Open("C:\Users\dell\Desktop\EMEA CEEMEA\EMEA CC FINAL LIST.xls") 

Dim C As MSForms.Control 
For Each C In Me.Controls 
    If TypeName(C) = "CheckBox" Then 
    If C.Value = True Then 
    If C.Caption = "Select All" Then 
    Else 

    Dim ff As String 
    ff = Trim(C.Caption) 
    With Wb 
     .Application.Sheets("Sheet2").Select 
     .Application.Range("A1").Select 

     .Application.Cells.Find(What:=ff, After:=ActiveCell, LookIn:=xlFormulas, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Activate 
     .Application.ActiveCell.Rows("1:1").EntireRow.Select 
     .Application.Selection.Delete Shift:=xlUp 
     .Application.Range("A1").Select 

    End With 

    End If 
    End If 
    End If 
Next C 

Wb.Close SaveChanges:=True 
Workbooks.Close 
Set Wb = Nothing 
Xc.Quit 
Set Xc = Nothing 
+0

您沒有指定工作表。試試'.Worksheet(「SheetName」)。找到...' – AntiDrondert

回答

1

您不需要打開工作簿作爲對象。這可能適合你。 workbooks.close關閉所有工作簿(如果存在)。

Dim WB As Workbook 
Set WB = Workbooks.Open("C:\Users\dell\Desktop\EMEA CEEMEA\EMEA CC FINAL LIST.xls") 
Dim C As MSForms.Control 
For Each C In Me.Controls 
If TypeName(C) = "CheckBox" Then 
If C.Value = True Then 
If C.Caption = "Select All" Then 
Else 


With WB 
    .Application.Sheets("Sheet2").Select 
    .Application.Range("A1").Select 

    .Application.Cells.Find(What:=C.Caption, After:=ActiveCell, LookIn:=xlFormulas, _ 
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
    MatchCase:=False, SearchFormat:=False).Activate 

    .Application.ActiveCell.Rows("1:1").EntireRow.Select 
    .Application.Selection.Delete Shift:=xlUp 

End With 

End If 
End If 
End If 
Next C 

WB.Close SaveChanges:=True 
Workbooks.Close 
Set WB = Nothing 
相關問題