2012-12-05 60 views
4

我正在清除3个Excel表中的某些表。错误-2147417848自动化错误调用的对象与客户端已断开连接

我的代码工作正常使用Excel 2007,我切换到Excel 2010中我开始这种运行时错误自动化错误调用该对象已经与其客户端断开,错误号-2147417848,然后选择Excel冻结。

的错误就行了

Sheets("Risk Details").Range("A3" & ":BV" & (count + 1)).Delete Shift:=xlUp 

运行此功能2倍谁能帮我找出为什么发生这种情况后表示,如何解决呢?

下面

是功能

Function clearData(Optional refresh As Boolean) As Boolean 
Application.ScreenUpdating = False 

Sheets("Single Risk Register").Unprotect myPass 
Sheets("Single Risk Register").Activate 
Cells.FormatConditions.Delete 


Sheets("Risk Details").Unprotect myPass 
Sheets("Risks").Unprotect myPass 
Dim currentrange As Range 


Sheets("Risks").Activate 
Set currentrange = Sheets("Risks").Range("RisksTable") 
currentrange.ClearContents 


Dim count As Integer 
count = Sheets("Risks").ListObjects("RisksTable").ListRows.count 
If count > 1 Then 
    Sheets("Risks").Range("A3" & ":C" & (count + 1)).Delete Shift:=xlUp 
End If 


Sheets("Risk Details").Activate 
Set currentrange = Sheets("Risk Details").Range("RiskDetails") 
currentrange.ClearContents 
count = Sheets("Risk Details").ListObjects("RiskDetails").ListRows.count 
If count > 1 Then 
    Sheets("Risk Details").Range("A3" & ":BV" & (count + 1)).Delete Shift:=xlUp 
End If 
Sheets("Single Risk Register").Activate 
count = CInt(Range("ActionsCount")) 
Range("ActionsCount") = 1 

Dim tableLastRow As Integer 
tableLastRow = getLastTableRow() 
If (tableLastRow >= 48) Then 
    Sheets("Single Risk Register").Range("B48" & ":K" & tableLastRow).Delete Shift:=xlUp 
End If 
Range("ActionsTable[[Action Description]:[Action Commentary]]").Select 
Application.CutCopyMode = False 
Selection.ClearContents 

Application.ScreenUpdating = False 
Dim DataRange As Range 

Dim o As Shape 
Dim tC As Variant 
Dim propertiesCount As Integer 
Dim i As Integer 

tC = Sheets("TableColumns").ListObjects("TableColumns").DataBodyRange 

propertiesCount = GetTemplatePropertiesCount(templates(0)) - 1 
ReDim properties(0 To propertiesCount - 1, 0 To 4) 
If (properitesColl.Item(i + 1)(propertiesCount, 2) = templates(0)) Then 
    properties = properitesColl.Item(i + 1) 
End If 

For count = 0 To propertiesCount - 1 
    If ((properties(count, 4) <> "C25") And (properties(count, 4) <> "C26") And (properties(count, 4) <> "C27") And (properties(count, 4) <> "C28") And (properties(count, 4) <> "C38") And (properties(count, 4) <> "C39") And (properties(count, 4) <> "C40") And (properties(count, 4) <> "C41")) 

    Then 
     Sheets("Single Risk Register").Range(properties(count, 4)) = "" 
    End If 
Next 

Dim columnCount As Integer 
columnCount = GetColumnCount() 
count = 0 
For i = 1 To columnCount 
    If tC(i, 4) <> "Action" Then 
     Set currentrange = Range(tC(i, 4)) 
    Else 
     Set currentrange = Range("ActionsTable[" & tC(i, 1) & "]") 
    End If 
    If ((tC(i, 4) = "C25") Or (tC(i, 4) = "C26") Or (tC(i, 4) = "C27") Or (tC(i, 4) = "C28") Or (tC(i, 4) = "C38") Or (tC(i, 4) = "C39") Or (tC(i, 4) = "C40") Or (tC(i, 4) = "C41")) 

    Then 
     With currentrange.Interior 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .Color = 15654866 
      .TintAndShade = 0 
      .PatternTintAndShade = 0 
     End With 

    Else 
     With currentrange.Interior 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .ThemeColor = xlThemeColorAccent1 
      .TintAndShade = 0.799981688894314 
      .PatternTintAndShade = 0 
     End With 
    End If 
Next 


Sheets("Single Risk Register").Unprotect myPass 
If (Range("C3").Value = "") Then 
    Range("ActionsTable[[Action Description]:[" & addTitle & "]]").Select 
    Selection.Locked = True 
    Rows("45:47").Select 
    Selection.EntireRow.Hidden = True 
End If 


Sheets("Single Risk Register").Range(Range("TitleCell")).Value = Range("OldTitle") + " (" + Range("Project_Title") + ")" 

Sheets("Single Risk Register").Protect myPass, AllowFiltering:=True 
Sheets("Risk Details").Protect myPass, AllowFiltering:=True 
Sheets("Risks").Protect myPass, AllowFiltering:=True 

doNotRun = False 
Range("C3").Select 
Application.ScreenUpdating = True 

Exit Function 

err: 

Sheets("Risk Details").Protect myPass 
Sheets("Risks").Protect myPass 
MsgBox err.Description, vbCritical, "Error" 
+0

也许这是我,但它确实会帮助代码更易于阅读(a) –

+0

感谢那 –

+1

http://support.microsoft.com/kb/319832 - 从该链接,**如果代码始终似乎在它第一次运行时运行,并且如果错误或意外行为仅在随后对相同代码的调用中发生,则不合格的方法调用是原因。** – SeanC

回答

相关问题