Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 方法“;“范围”;对象“U全局”的;失败_Vba_Excel - Fatal编程技术网

Vba 方法“;“范围”;对象“U全局”的;失败

Vba 方法“;“范围”;对象“U全局”的;失败,vba,excel,Vba,Excel,有人问过这个问题,但我想不出我的问题的答案。我知道,如果没有指定范围,就会发生此错误。但是,我已经指定了范围,或者认为我已经指定了范围,但它不想工作 代码设计用于从编码的成绩单创建两个新的工作表,然后添加不同的公式以两种不同的方式计算代码。“LastRow”代码适用于第一张图纸,但不适用于第二张图纸,我不知道为什么或如何修复它 我感谢你的建议 代码如下: Sub FullDurationCoding() ' Format the file to run the Duration

有人问过这个问题,但我想不出我的问题的答案。我知道,如果没有指定范围,就会发生此错误。但是,我已经指定了范围,或者认为我已经指定了范围,但它不想工作

代码设计用于从编码的成绩单创建两个新的工作表,然后添加不同的公式以两种不同的方式计算代码。“LastRow”代码适用于第一张图纸,但不适用于第二张图纸,我不知道为什么或如何修复它

我感谢你的建议

代码如下:

    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
Sub-FullDurationCoding()
'格式化文件以在两个新工作表上运行持续时间代码。
ActiveWorkbook.Worksheets(1).Name=“转录本”
表格(“成绩单”)。选择
表格(“成绩单”)。之后的副本:=表格(“成绩单”)
ActiveSheet.Name=“TopicDuration”
表格(“成绩单”)。选择
工作表(“成绩单”)。之后复印:=工作表(“主题持续时间”)
ActiveSheet.Name=“TurnDuration”
'计算行数直到“@End”
将最后一行变暗为单行
LastRow=范围(“A”和Rows.Count).End(xlUp).Row
'添加主题持续时间公式。
'将主题持续时间计数公式添加到C列
工作表(“主题持续时间”)。选择
范围(“C2:C”和LastRow)。公式=“=IF(或(ISNUMBER(搜索({“$TOP:SLF:NON:0”,“$TOP:SLF:NON:MIX”,“$TOP:OTH:NON:0”,“$TOP:OTH:NON:MIX”,“$TOP:OTH:OVR:NON:0”,“B2”)),1,IF(或(ISNUMBER)(搜索({“$TOP:SLF:UNT”,“$TOP:UNT:SLF:UNT”,“$TOP:SLF:SPL:SPL”,“$TOP:OTH:UNT:UNT”,“UNT:UNT”,“$TOP:OVR:OVR:B2”))或(搜索({:SLF: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”)
范围(“C1”)。值=1
'将主题持续时间计算公式添加到D列
Range(“D2:D”和LastRow).Formula=“=IF(或(ISNUMBER(搜索({“$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”)
范围(“D1”).Value=“计算”
'将小计计算添加到单元格E1到E15
范围(“E1”)。公式=“=小计(1,D:D)”
'过滤列D。
范围(“A1:E”和LastRow)。自动筛选字段:=4,标准1:=“0”,运算符:=xlAnd,标准2:=“否”
'添加TurnDurationFormulas()
'将回合持续时间计数公式添加到C列
工作表(“周转时间”)。选择
范围(“C1”)。值=1
范围(“C2”)。公式=“=IF(A1=”“CHI)”、0、IF(或)ISNUMBER(搜索({“$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:CON:0”、“$TOP:OTH:OTH:CON:CON:MIX”、“$TOP:OTH:OTH:OVR:CON:MIX”、“OTH:OVR:CON:MIX”、$TOP:OTH:OVR:OVR:CON:CON:0、CON:1、SPL:SPL:splut($TOP:SLF)或$TOP:SLF)isf$TOP:OTH:UNT“,”$TOP:OTH:OVR:SPL“},B2))),C1+0,IF(或(ISNUMBER(搜索({“$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,IF(A1=“”)))”
范围(“C3”).Formula=“=IF(A2=”“CHI)”、0、IF(或)ISNUMBER(搜索({“$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:CON:0”、“$TOP:OTH:OTH:CON:CON:MIX”、“$TOP:OTH:OTH:OVR:CON:CON:MIX”、$TOP:OVR:OVR:CON:CON:MIX)、$TOP:OVR:OVR:OVR:OVR:CON:CON:0、OTH:UNT、OTH:UNT、OTH:UNT、OTH:SPL:SPL:SPL、OTH:1、OTH:sp$TOP:OTH:UNT“,”$TOP:OTH:OVR:SPL“},B3))),C2+0,IF(或(ISNUMBER(搜索({“$TOP:SLF:CON:0“,”$TOP:SLF:CON:0“,”B3)),C2+1,IF(搜索({“$TOP:OTH:OVR:FLW:0”,“$TOP:OTH:OVR:FLW:MIX”“,”B3)),C1+1,IF(A2=”“,”com“,”C2+0,IF(A2=“”),C2+0)”,C2+1
范围(“C4”).Formula=“=IF(A3=”“CHI)”、0、IF(或)ISNUMBER(搜索({“$TOP:SLF:NON:0”、“$TOP:SLF:NON:MIX”、“$TOP:OTH:NON:0”、“$TOP:OTH:NON:MIX”、“$TOP:OTH:OVR:NON:MIX”、“$TOP:OTH:OVR:CON:0”、“$TOP:OTH:OTH:CON:CON:MIX”、“$TOP:OTH:OTH:OTH:OVR:CON:MIX”、“CON:MIX”、“$TOP:b4oth:OVR:CON:CON:0”或$TOP:SLF)或$TOP:SLF($TOP:SLF)搜索($TOP:CON:1)$TOP:OTH:UNT“,”$TOP:OTH:OVR:SPL“},B4))),C3+0,如果(或(ISNUMBER(搜索({“$TOP:SLF:CON:0“,”$TOP:SLF:CON:0“,”B4))),C3+1,如果(搜索({“$TOP:OTH:OVR:FLW:0”,“$TOP:OTH:OVR:FLW:MIX“,”B4)),C1+1,如果(A3=”,C3+0,如果(A3=”),C3+0)”,C3+0
*****范围(“C5:C”和LastRow)。公式=“=IF(A4=”“CHI)”、0、IF(或)ISNUMBER(搜索({“$TOP:SLF:NON:0”、“$TOP:SLF:NON:MIX”、“$TOP:OTH:NON:0”、“$TOP:OTH:NON:MIX”、“$TOP:OTH:OVR:NON:MIX”、“$TOP:OTH:OTH:OVR:NON:0”、“$TOP:OTH:OTH:CON:CON:CON:MIX”、“$TOP:OTH:OTH:OVR:CON:CON:MIX”、“ont:OTH:OTH:OVR:CON:MIX”、“ont:OTH:OVR:CON:MIX”、“ont:TOP:OTH:OTH:OTH:OVR:OVR:CON:CON:NON:1”或“)”)isf($TOP:1$TOP:SLF:SPL“,”$TOP:OTH:UNT“,$TOP:OTH:OVR:SPL“},B5)))、C4+0、IF(或(“$TOP:SLF:CON:0”,“$TOP:SLF:CON:MIX“},B5”)、C4+1、IF(或(ISNUMBER(搜索({“$TOP TOP:OTH:OVR:FLW:0”,“$TOP:OTH:OVR:MIX“},B5”)))、C1+1、IF(A5=”“)、com“、C4+0、IF(A4=”“)、C4+0)”
'将回合持续时间计算公式添加到D列
***范围(“D2:D”和LastRow)。公式=“=IF(C2=0,C1,IF(或(ISNUMBER(搜索({“$TOP:SLF:NON:0”,“$TOP:SLF:NON:MIX”,“$TOP:OTH:NON:0”,“$TOP:OTH:NON:MIX”,“$TOP:OTH:OVR:NON:0”,“B2”)),C1,“NO”)
范围(“D1”).Value=“计算”
'将小计计算添加到单元格E1到E15
范围(“E1”)。公式=“=小计(1,D:D)”
'过滤列D。
范围(“A1:E”和LastRow)。自动筛选字段:=4,标准1:=“0”,运算符:=xlAnd,标准2:=“否”
端接头
带******的行是引发错误的行,但带***的行在调试系统时也会出错。我猜这一定与试图在两个不同的工作表上定义Lastrow有关,但即使我将它们拆分为单独的子操作并将Dim代码放在第二个子操作中,仍然会导致错误这段代码运行得更早,但我需要稍微修改一下公式