对象_Global的方法“范围”失败

这个问题已经被问到了,但我无法弄清楚我的情况。 我知道这个错误发生时,某种程度上没有指定范围。 但是,我已经指定了范围,或者以为我做了,不想工作。

该代码旨在创build两个新的工作表,从一个编码的抄本,然后添加不同的公式,以两种不同的方式计算代码。 “LastRow”代码适用于第一张纸,但不适用于第二张纸,我不知道为什么或如何解决它。

我感谢任何build议。

这里是代码:

Sub FullDurationCoding() ' Format the file to run the Duration Codes on two new worksheets. ActiveWorkbook.Worksheets(1).Name = "Transcript" Sheets("Transcript").Select Sheets("Transcript").Copy After:=Sheets("Transcript") ActiveSheet.Name = "TopicDuration" Sheets("Transcript").Select Sheets("Transcript").Copy After:=Sheets("TopicDuration") ActiveSheet.Name = "TurnDuration" ' Count number of lines till "@End" Dim LastRow As Single LastRow = Range("A" & Rows.Count).End(xlUp).Row ' Add TopicDuration formulas. ' Add Topic Duration Count formula to column C Sheets("TopicDuration").Select Range("C2:C" & LastRow).Formula = "=IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:NON:0"",""$TOP:SLF:NON:MIX"",""$TOP:OTH:NON:0"",""$TOP:OTH:NON:MIX"",""$TOP:OTH:OVR:NON:MIX"",""$TOP:OTH:OVR:NON:0""},B2))),1,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:UNT"",""$TOP:SLF:SPL"",""$TOP:OTH:UNT"",""$TOP:OTH:OVR:SPL""},B2))),C1+0,IF(OR(ISNUMBER(SEARCH({""TOP:SLF:CON:0"",""TOP:SLF:CON:MIX"",""TOP:OTH:CON:0"",""TOP:OTH:CON:MIX"",""TOP:OTH:OVR:CON:0"",""TOP:OTH:OVR:CON:MIX"",""TOP:OTH:OVR:FLW:0"",""TOP:OTH:OVR:FLW:MIX""},B2))),C1+1,C1+0)))" Range("C1").Value = 1 ' Add Topic Duration Calculation formula to column D Range("D2:D" & LastRow).Formula = "=IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:NON:0"",""$TOP:SLF:NON:MIX"",""$TOP:OTH:NON:0"",""$TOP:OTH:NON:MIX"",""$TOP:OTH:OVR:NON:MIX"",""$TOP:OTH:OVR:NON:0""},B2))),C1,""NO"")" Range("D1").Value = "Calculation" ' Add Subtotal Calulation to Cell E1 through E15 Range("E1").Formula = "=SUBTOTAL(1,D:D)" ' Filter Column D. Range("A1:E" & LastRow).AutoFilter Field:=4, Criteria1:="<>0", Operator:=xlAnd, Criteria2:="<>NO" ' Add TurnDurationFormulas() ' Add Turn Duration Count formula to column C Sheets("TurnDuration").Select Range("C1").Value = 1 Range("C2").Formula = "=IF(A1=""CHI"",0,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:NON:0"",""$TOP:SLF:NON:MIX"",""$TOP:OTH:NON:0"",""$TOP:OTH:NON:MIX"",""$TOP:OTH:OVR:NON:MIX"",""$TOP:OTH:OVR:NON:0"",""$TOP:OTH:CON:0"",""$TOP:OTH:CON:MIX"",""$TOP:OTH:OVR:CON:MIX"",""$TOP:OTH:OVR:CON:0""},B2))),1,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:UNT"",""$TOP:SLF:SPL"",""$TOP:OTH:UNT"",""$TOP:OTH:OVR:SPL""},B2))),C1+0,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:CON:0"",""$TOP:SLF:CON:MIX""},B2))),C1+1,IF(A2=""com"",C1+0,IF(A1=""cod"",C1+0,IF(A1=""MOT"",C1+1,C1+0)))))))" Range("C3").Formula = "=IF(A2=""CHI"",0,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:NON:0"",""$TOP:SLF:NON:MIX"",""$TOP:OTH:NON:0"",""$TOP:OTH:NON:MIX"",""$TOP:OTH:OVR:NON:MIX"",""$TOP:OTH:OVR:NON:0"",""$TOP:OTH:CON:0"",""$TOP:OTH:CON:MIX"",""$TOP:OTH:OVR:CON:MIX"",""$TOP:OTH:OVR:CON:0""},B3))),1,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:UNT"",""$TOP:SLF:SPL"",""$TOP:OTH:UNT"",""$TOP:OTH:OVR:SPL""},B3))),C2+0,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:CON:0"",""$TOP:SLF:CON:MIX""},B3))),C2+1,IF(OR(ISNUMBER(SEARCH({""$TOP:OTH:OVR:FLW:0"",""$TOP:OTH:OVR:FLW:MIX""},B3))),C1+1,IF(A3=""com"",C2+0,IF(A2=""cod"",C2+0,IF(A2=""MOT"",C2+1,C2+0))))))))" Range("C4").Formula = "=IF(A3=""CHI"",0,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:NON:0"",""$TOP:SLF:NON:MIX"",""$TOP:OTH:NON:0"",""$TOP:OTH:NON:MIX"",""$TOP:OTH:OVR:NON:MIX"",""$TOP:OTH:OVR:NON:0"",""$TOP:OTH:CON:0"",""$TOP:OTH:CON:MIX"",""$TOP:OTH:OVR:CON:MIX"",""$TOP:OTH:OVR:CON:0""},B4))),1,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:UNT"",""$TOP:SLF:SPL"",""$TOP:OTH:UNT"",""$TOP:OTH:OVR:SPL""},B4))),C3+0,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:CON:0"",""$TOP:SLF:CON:MIX""},B4))),C3+1,IF(OR(ISNUMBER(SEARCH({""$TOP:OTH:OVR:FLW:0"",""$TOP:OTH:OVR:FLW:MIX""},B4))),C1+1,IF(A4=""com"",C3+0,IF(A3=""cod"",C3+0,IF(A3=""MOT"",C3+1,C3+0))))))))" ***** Range("C5:C" & LastRow).Formula = "=IF(A4=""CHI"",0,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:NON:0"",""$TOP:SLF:NON:MIX"",""$TOP:OTH:NON:0"",""$TOP:OTH:NON:MIX"",""$TOP:OTH:OVR:NON:MIX"",""$TOP:OTH:OVR:NON:0"",""$TOP:OTH:CON:0"",""$TOP:OTH:CON:MIX"",""$TOP:OTH:OVR:CON:MIX"",""$TOP:OTH:OVR:CON:0""},B5))),1,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:UNT"",""$TOP:SLF:SPL"",""$TOP:OTH:UNT"",""$TOP:OTH:OVR:SPL""},B5))),C4+0,IF(OR(""$TOP:SLF:CON:0"",""$TOP:SLF:CON:MIX""},B5))),C4+1,IF(OR(ISNUMBER(SEARCH({""$TOP:OTH:OVR:FLW:0"",""$TOP:OTH:OVR:FLW:MIX""},B5))),C1+1,IF(A5=""com"",C4+0,IF(A4=""cod"",C4+0,IF(A4=""MOT"",C4+1,C4+0))))))))" ' Add Turn Duration Calculation formula to column D *** Range("D2:D" & LastRow).Formula = "=IF(C2=0,C1,IF(OR(ISNUMBER(SEARCH({""$TOP:SLF:NON:0"",""$TOP:SLF:NON:MIX"",""$TOP:OTH:NON:0"",""$TOP:OTH:NON:MIX"",""$TOP:OTH:OVR:NON:MIX"",""$TOP:OTH:OVR:NON:0""},B2))),C1,""NO"")" Range("D1").Value = "Calculation" ' Add Subtotal Calulation to Cell E1 through E15 Range("E1").Formula = "=SUBTOTAL(1,D:D)" ' Filter Column D. Range("A1:E" & LastRow).AutoFilter Field:=4, Criteria1:="<>0", Operator:=xlAnd, Criteria2:="<>NO" End Sub 

与*****一致的是发起错误的那一行,但是当我通过debugging系统时,带***的行也会得到错误。 我猜测它必须有两个不同的工作表上定义拉斯特罗有什么事,但即使当我把它们分成不同的子行动,并把昏暗的代码放在第二个子,它仍然会导致错误。 这个代码早些时候工作,但我需要改变公式,一旦我做了,现在它不会做任何事情。 (但是我知道这不是公式,因为我在前面的行和主题持续时间部分以相同的方式修正了这个公式)。

请帮忙。 谢谢。

  1. 为什么要将Dim LastRow声明为Single而不是Long? 单个可能存储小数点 – 无用 – 。
  2. LastRow无事可做,问题依赖于你的公式。
  3. 您正在使用数组公式

… .Formula =“= IF(A4 =”“CHI”“,0,IF(OR(ISNUMBER(SEARCH( { ..

尝试改变这些行:.FormulaArray
PS:不要自己input字符。