Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
Excel VBA。选择仅在图纸上工作(1)_Excel_Vba - Fatal编程技术网

Excel VBA。选择仅在图纸上工作(1)

Excel VBA。选择仅在图纸上工作(1),excel,vba,Excel,Vba,我目前正在设置新的设计Excel文件,以便更好地适应移动设备。但是一些客户也需要旧设计文件,我需要将数据从新设计文件导出到旧设计文件。 旧设计文件包含4张图纸。导出数据后,我要在所有图纸上选择单元格A1。但我只能选择范围(“A1”)。选择或单元格(1,1)。仅在工作表上选择(1)。如果我在其他工作表上设置,我会得到“运行时错误“1004”:范围类的Select方法失败”。下面是VBA代码以及一些注释。请帮忙 Set Old_CV = Application.Workbooks.Open(Old_

我目前正在设置新的设计Excel文件,以便更好地适应移动设备。但是一些客户也需要旧设计文件,我需要将数据从新设计文件导出到旧设计文件。 旧设计文件包含4张图纸。导出数据后,我要在所有图纸上选择单元格A1。但我只能选择范围(“A1”)。选择或单元格(1,1)。仅在工作表上选择(1)。如果我在其他工作表上设置,我会得到“运行时错误“1004”:范围类的Select方法失败”。下面是VBA代码以及一些注释。请帮忙

Set Old_CV = Application.Workbooks.Open(Old_File_Path)
ThisWorkbook.Worksheets("Data_Import").ListObjects("tbl_part2").DataBodyRange.Copy
wsTarget = ThisWorkbook.Worksheets("Data_Import").Range("rng_CV_Part2_Old")
Old_CV.Worksheets(wsTarget).Range(wsSource.Range("rng_P2_A1_Start_Old").Value).PasteSpecial xlPasteValuesAndNumberFormats

Old_CV.Activate
Old_CV.Sheets(1).Cells(1, 1).Select 'This line works even without Old_CV.Active
Old_CV.Sheets(2).Cells(1, 1).Select 'This and below lines don't work even with Old_CV.Active and showing Runtime Error
Old_CV.Sheets(3).Cells(1, 1).Select
Old_CV.Sheets(4).Cells(1, 1).Select
请提供帮助。

激活并选择
  • Select
    Activate
    通常都是这样,但是如果没有它们,您就无法完成此任务
  • 一个好主意是从最后一个工作表到第一个工作表执行此操作,以便第一个工作表保持选中状态(激活)
  • 在前两个示例中,您在选择单元格之前激活了每个工作表,因此无需激活工作簿
  • 在第三个示例中,您必须首先激活工作簿,最后必须选择第一个工作表“以摆脱组”
  • out注释行用于创建关键工作示例,其中第一个工作簿和另一个工作簿处于活动状态
代码

Option Explicit

Sub test1()
    
'    Dim Old_CV As Workbook
'    Set Old_CV = ThisWorkbook
'    Workbooks("Book2").Activate
'    ActiveSheet.Cells(1, 1).Value = 1
    
    Old_CV.Worksheets(4).Activate
    Old_CV.Worksheets(4).Cells(1, 1).Select
    Old_CV.Worksheets(3).Activate
    Old_CV.Worksheets(3).Cells(1, 1).Select
    Old_CV.Worksheets(2).Activate
    Old_CV.Worksheets(2).Cells(1, 1).Select
    Old_CV.Worksheets(1).Activate
    Old_CV.Worksheets(1).Cells(1, 1).Select

End Sub

Sub test2()
    
'    Dim Old_CV As Workbook
'    Set Old_CV = ThisWorkbook
'    Workbooks("Book2").Activate
'    ActiveSheet.Cells(1, 1).Value = 2
    
    Dim n As Long
    For n = 4 To 1 Step -1
        Old_CV.Worksheets(n).Activate
        Old_CV.Worksheets(n).Cells(1, 2).Select
    Next n

End Sub

Sub test3()
    
'    Dim Old_CV As Workbook
'    Set Old_CV = ThisWorkbook
'    Workbooks("Book2").Activate
'    ActiveSheet.Cells(1, 1).Value = 3
    
    Old_CV.Activate
    Old_CV.Worksheets(Array(1, 2, 3, 4)).Select
    ActiveSheet.Cells(1, 3).Select
    Old_CV.Worksheets(1).Select

End Sub

床单有保护吗?可以手动选择吗?图纸(1)和图纸(2)受保护,图纸(3)和图纸(4)不受保护。我可以手动选择。谢谢@vbasic208。
我已经按照您的test2()完成了操作,并将For循环修改为
For I=Old_CV.Sheets.Count为1步-1