引用单元格范围会生成运行时错误1004方法'范围'对象' _global'失败

时间:2018-04-11 21:30:44

标签: excel vba excel-vba

我对从Google表格中获取的数据进行计算(通过获取外部数据 - >来自Web)。我必须首先激活(F2,ENTER)单元格,否则我收到[DIV / 0]错误。

我需要在多个范围间隔内执行此操作。

此代码返回"运行时错误1004:方法'范围'对象' _Global'失败。点击'调试'突出了遇到的第一个Range," rrr"在这种情况下。"

Sub RefreshCells()
Dim r, rr, rrr, rrrr, mmm, mmmm As Range
Set rrr = Range("D153:D184,D223:D254,D293:D324,D363:D394,D433:D464,D503:D534,D573:D604,D643:D674,D713:D744,D783:D814,D853:D884,D923:D954, D993:D1024,D1063:D1094,D1133:D1164,D1203:D1234,D1273:D1304,D1343:D1374, D1413:D1444,D1483:D1514,D1553:D1584,D1623:D1654,D1693:D1724,D1763:D1794, D1833:D1864,D1903:D1934,D1973:D2004,D2043:D2074,D2113:D2144,D2183:D2214, D2253:D2284,D2323:D2354,D2393:D2424")
Set mmm = Range("D2463:D2494,D2533:D2564,D2603:D2634,D2673:D2704,D2743:D2774,D2813:D2844,D2883:D2914,D2953:D2984,D3023:D3054,D3093:D3124,D3163:D3194,D3233:D3264,D3303:D3334,D3373:D3404,D3443:D3474,D3513:D3544,D3583:D3614,D3653:D3684,D3723:D3754,D3793:D3824,D3863:D3894,D3933:D3964,D4003:D4034,D4073:D4104,D4143:D4174,D4213:D4244,D4283:D4314,D4353:D4384,D4423:D4454,D4493:D4524,D4563:D4594")
Set rrrr = Range("D4633:D4664,D4703:D4734,D4773:D4804,D4843:D4874,D4913:D4944,D4983:D5014,D5053:D5084,D5123:D5154,D5193:D5224,D5263:D5294,D5333:D5364,D5403:D5434,D5473:D5504,D5543:D5574,D5613:D5644,D5683:D5714,D5753:D5784,D5823:D5854,D5893:D5924,D5963:D5994,D6033:D6064,D6103:D6134,D6173:D6204,D6243:D6274,D6313:D6344,D6383:D6414,D6453:D6484,D6523:D6554,D6593:D6624,D6663:D6694,D6733:D6764")
Set mmmm = Range("D6803:D6834,D6873:D6904,D6943:D6974,D7013:D7044,D7083:D7114,D7153:D7184,D7223:D7254,D7293:D7324,D7363:D7394,D7433:D7464,D7503:D7534,D7573:D7604,D7643:D7674,D7713:D7744,D7783:D7814,D7853:D7884,D7923:D7954,D7993:D8024,D8063:D8094,D8133:D8164,D8203:D8234,D8273:D8304,D8343:D8374,D8413:D8444,D8483:D8514,D8553:D8584,D8623:D8654,D8693:D8724,D8763:D8794,D8833:D8864,D8903:D8934,D8973:D9003")
Set rr = Union(rrr, rrrr, mmm, mmmm)
For Each r In rr
    r.Select
    Application.SendKeys "{F2}"
    Application.SendKeys "{ENTER}"
    DoEvents
Next
End Sub

1 个答案:

答案 0 :(得分:0)

您的范围超过了255个字符的限制。

Option Explicit

Sub RefreshCells()
    Dim r as range, rrr As Range
    Set rrr = Range("D153:D184,D223:D254,D293:D324,D363:D394,D433:D464,D503:D534,D573:D604,D643:D674,D713:D744,D783:D814,D853:D884,D923:D954, D993:D1024,D1063:D1094,D1133:D1164,D1203:D1234,D1273:D1304,D1343:D1374, D1413:D1444,D1483:D1514,D1553:D1584")
    Set rrr = Union(rrr, Range("D1623:D1654,D1693:D1724,D1763:D1794, D1833:D1864,D1903:D1934,D1973:D2004,D2043:D2074,D2113:D2144,D2183:D2214, D2253:D2284,D2323:D2354,D2393:D2424"))
    Set rrr = Union(rrr, Range("D2463:D2494,D2533:D2564,D2603:D2634,D2673:D2704,D2743:D2774,D2813:D2844,D2883:D2914,D2953:D2984,D3023:D3054,D3093:D3124,D3163:D3194,D3233:D3264,D3303:D3334,D3373:D3404,D3443:D3474,D3513:D3544,D3583:D3614,D3653:D3684,D3723:D3754"))
    Set rrr = Union(rrr, Range("D3793:D3824,D3863:D3894,D3933:D3964,D4003:D4034,D4073:D4104,D4143:D4174,D4213:D4244,D4283:D4314,D4353:D4384,D4423:D4454,D4493:D4524,D4563:D4594"))
    Set rrr = Union(rrr, Range("D4633:D4664,D4703:D4734,D4773:D4804,D4843:D4874,D4913:D4944,D4983:D5014,D5053:D5084,D5123:D5154,D5193:D5224,D5263:D5294,D5333:D5364,D5403:D5434,D5473:D5504,D5543:D5574,D5613:D5644,D5683:D5714,D5753:D5784,D5823:D5854,D5893:D5924"))
    Set rrr = Union(rrr, Range("D5963:D5994,D6033:D6064,D6103:D6134,D6173:D6204,D6243:D6274,D6313:D6344,D6383:D6414,D6453:D6484,D6523:D6554,D6593:D6624,D6663:D6694,D6733:D6764"))
    Set rrr = Union(rrr, Range("D6803:D6834,D6873:D6904,D6943:D6974,D7013:D7044,D7083:D7114,D7153:D7184,D7223:D7254,D7293:D7324,D7363:D7394,D7433:D7464,D7503:D7534,D7573:D7604,D7643:D7674,D7713:D7744,D7783:D7814,D7853:D7884,D7923:D7954,D7993:D8024,D8063:D8094"))
    Set rrr = Union(rrr, Range("D8133:D8164,D8203:D8234,D8273:D8304,D8343:D8374,D8413:D8444,D8483:D8514,D8553:D8584,D8623:D8654,D8693:D8724,D8763:D8794,D8833:D8864,D8903:D8934,D8973:D9003"))

    For Each r In rrr
        r.Select
        Application.SendKeys "{F2}"
        Application.SendKeys "{ENTER}"
        DoEvents
    Next
End Sub