应用程序定义或对象定义错误(命名范围)

时间:2013-06-21 07:39:43

标签: excel-vba vba excel

我在这里用我的代码难以接受,我得到这个通用错误,它应该在创建工作表之后复制并粘贴所选范围,但它给了我这个令人沮丧的错误 - 我不知道我做错了什么在这里,请帮助大家,所有帮助赞赏:)

Private Sub ExpBttn()

Dim WrkShtExists As Boolean
Dim Sht As Worksheet
Dim x As Integer
Dim TgtRngR As Range
Dim TgtRngB As Range
Dim TgtNme As String

Select Case Multi
Case MultiPage1.Value = 0
    Set TgtRngR = Sheets("Tracker").Range("U2:Z19")
    Set TgtRngB = Sheets("Tracker").Range("U21:Z26")
    TgtNme = "P4PSoft"
Case MultiPage1.Value = 1
    Set TgtRngR = Sheets("Tracker").Range("AB2:AG19")
    Set TgtRngB = Sheets("Tracker").Range("AB21:AG26")
    TgtNme = "P4PHard"
Case MultiPage1.Value = 2
    Set TgtRngR = Sheets("Tracker").Range("AP2:AU19")
    Set TgtRngB = Sheets("Tracker").Range("AP21:AU26")
    TgtNme = "RCI"
Case MultiPage1.Value = 3
    Set TgtRngR = Sheets("Tracker").Range("AI2:AN19")
    Set TgtRngB = Sheets("Tracker").Range("AI21:AN26")
    TgtNme = "RCDI"

End Select

Sheets.Add.Name = "Exported_" & TgtNme

Sheets("Tracker").Range("TgtRngR").Copy Destination:=Sheets("Exported_" & TgtNme).Range("A1:F18")
Sheets("Tracker").Range("TgtRngB").Copy Destination:=Sheets("Exported_" & TgtNme).Range("A20:F25")
Sheets("Exported_" & TgtNme).Range("A1:F18") = Sheets("Tracker").Range("TgtRngR").Value
Sheets("Exported_" & TgtNme).Range("A20:F25") = Sheets("Tracker").Range("TgtRngB").Value
Sheets("Exported_" & TgtNme).Select
ActiveSheet.Columns("A:F").AutoFit

2 个答案:

答案 0 :(得分:0)

请查看您的Case声明:

  • Case开启者中使用了(本地)变量Multi
  • 在liition语句中
  • 使用不同的对象MultiPage1.Value
  • 两个都没有宣布

对我来说,它看起来没有Case分支被执行,因此TgtRngRTgtRngBTgtNme未定义。

Private Sub ExpBttn()设置断点并使用F8单步执行Sub会有所帮助。

答案 1 :(得分:0)

您已在Case语句中设置范围变量,因此请在复制/粘贴

中使用它
TgtRngR.Copy Destination:=Sheets("Exported_" & TgtNme).Range("A1:F18")

Sheets("Exported_" & TgtNme).Range("A1:F18") = TgtRngR

此外,您的案例陈述逻辑不正确。它应该像

TgtNme = ""
Select Case MultiPage1.Value
Case 0
    ...
Case 1
    ...
'etc
End Select

If TgtNme <>"" then
    ' do the cop pastes
End If