范围类的自动填充方法失败 - 我的代码需要帮助

时间:2017-06-06 06:17:24

标签: vba excel-vba excel

我一直在尝试做这项工作。它在我的x64版本的办公室上运行良好,但在同事的计算机上却没有x86。有人可以给我一个修复吗?

VBA引擎突出显示Range("AV5").AutoFill Destination:=Range("AV5:AV" & NoOfClients)作为原因

Private Sub Check_Cases_Click()
Dim NoOfClients As Long

Application.DisplayAlerts = False
CO_Select = Application.InputBox("Please input the name of caseworker you would like to check on.", "Caseworker Name")
Range("A2").value = CO_Select


Application.ScreenUpdating = False
NoOfClients = Range("C2").value
CO_Name = Range("A2").value



CheckCaseMsg = MsgBox(CO_Name & ", there are " & NoOfClients & " clients under your name." & vbNewLine & vbNewLine & _
                    "System will now calculate all your active cases and display " & vbNewLine & _
                    "all the clients for your information." & vbNewLine & vbNewLine & _
                    "Confirm?", vbYesNo, "Case Checking")

If CheckCaseMsg = vbNo Then
Exit Sub
End If


If CheckCaseMsg = vbYes Then

'Remove the filters if one exists
'=========================================
If ActiveSheet.FilterMode Then
Selection.AutoFilter
End If

Clear
Startup_Formula

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Range("AV5").AutoFill Destination:=Range("AV5:AV" & NoOfClients)

Application.Calculation = xlCalculationAutomatic

Range("GI_Table[[#All],[Client number]]").Copy
Range("GI_Table[[#All],[Client number]]").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.ScreenUpdating = True

ActiveSheet.ListObjects("GI_Table").Range.AutoFilter Field:=2, Criteria1:= _
        Array("ACTIVE", "INACTIVE", "RENEWED"), Operator:=xlFilterValues

GI_CustomSort
GI_CustomSort


MsgBox "Case Checking Ready", vbInformation, "Ready"
End If

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

3 个答案:

答案 0 :(得分:0)

而不仅仅是Range("..").你应该尝试

Dim sht as Worksheet
Set sht = Worksheets("Name")

sht.Range("..")

等等。

答案 1 :(得分:0)

如果Autofill method of range class failed的值为NoOfClients,您将收到5错误。结束行与起始行相同。这是一种重现错误的简单方法。

Sub Sample()
    NoOfClients = 5

    Range("AV5").AutoFill Destination:=Range("AV5:AV" & NoOfClients)
End Sub

.Autofill的替代方法是直接写入范围。例如:

Range("AV5:AV" & NoOfClients).Formula = Range("AV5").Formula

答案 2 :(得分:0)

好的我知道现在的问题是什么。我想。

我限制了Sub for Worksheet_Activate中的滚动区域,NoOfClients的值超出了允许的数量!

所以我删除了它,我认为现在好了!这是我的最终代码(滚动区域现在变为动态)

Private Sub Check_Cases_Click()
Dim NoOfClients As Long

ActiveSheet.ScrollArea = ""
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = False
CO_Select = Application.InputBox("Please input the name of caseworker you would like to check on.", "Caseworker Name")
Range("A2").value = CO_Select


Application.ScreenUpdating = False
NoOfClients = Range("C2").value
CO_Name = Range("A2").value



CheckCaseMsg = MsgBox(CO_Name & ", there are " & NoOfClients & " clients under your name." & vbNewLine & vbNewLine & _
                    "System will now calculate all your active cases and display " & vbNewLine & _
                    "all the clients for your information." & vbNewLine & vbNewLine & _
                    "Confirm?", vbYesNo, "Case Checking")

If CheckCaseMsg = vbNo Then
Exit Sub
End If


If CheckCaseMsg = vbYes Then

'Remove the filters if one exists
'=========================================
If ActiveSheet.FilterMode Then
Selection.AutoFilter
End If

Clear
Startup_Formula


'Fill down the formula for n times where n= No of Clients of the Caseworker'
'=============================================================================
Dim Sht As Worksheet

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Set Sht = Worksheets("Grand Info Sheet")
NoOfClients = Range("C2").value
NoOfClientsAdjusted = NoOfClients + 4

Sht.Range("AV5").AutoFill Destination:=Sht.Range("AV5:AV" & NoOfClientsAdjusted)

Application.Calculation = xlCalculationAutomatic

Range("GI_Table[[#All],[Client number]]").Copy
Range("GI_Table[[#All],[Client number]]").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.ScreenUpdating = True

GI_CustomSort

MsgBox "Case Checking Ready", vbInformation, "Ready"
Range("A1").Select
End If

ActiveSheet.ScrollArea = "A1:AW" & NoOfClientsAdjusted + 5
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub