我的情况是我从Workbook
打开MS Word
,在那里我找到了一些文本并删除了找到文本的整行。为了实现这一点,我使用Userform具有复选框和按钮。下面的代码循环显示所有复选框,如果C.Value
返回True
,则按 CEEMEA 按钮执行操作。
我遇到Excel Object
命名Xc
的问题。
我第一次运行 CEEMEA 宏,它运行正常(打开工作簿 - >查找文本 - >删除行 - >关闭工作簿等);
但是第二次,它返回错误 Run-time Error '13': Type mismatch
。,到目前为止我认为第一次运行时可能会留下一些东西,我没有退出/关闭/设置为空,(重复工作簿)
我检查了所有拼写,一切都正确。
我最后有Xc.Quit
,Set Xc= Nothing
。
我不明白它出了什么问题。我在第一次运行时可能会遇到Quit
或Set
到Nothing
的问题。我把整个代码放在下面。请帮助...
如果有更好的方式做这项工作,请提出建议。
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 :(得分: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