首页 > 解决方案 > 模块在错误的工作簿中运行

问题描述

所以我试图从一个工作簿中复制一些单元格并使用以下代码将它们粘贴到另一个工作簿中:

Sub Finder()
Range("C2").Value = "Measurement"
Range("C2").ColumnWidth = 13

Range("D2").Value = "Unit"
Range("D2").ColumnWidth = 5

Range("E2").Value = "Balloon"
Range("E2").ColumnWidth = 8

Range("F2").Value = "Nominal Value"
Range("F2").ColumnWidth = 14

Range("G2").Value = "+Tolerance"
Range("G2").ColumnWidth = 11

Range("H2").Value = "-Tolerance"
Range("H2").ColumnWidth = 11

Range("I2").Value = "Pass/Fail"
Range("I2").ColumnWidth = 8

Range("C2:I2").Font.Bold = True
Range("C2:I2").HorizontalAlignment = xlCenter

With Range("C2:I2").Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
    End With

Dim x As Workbook
Dim y As Workbook

Set x = Workbooks.Open("C:\Users\me\Documents\Keyence\Book.xlsx")
Set y = Workbooks.Open("C:\Users\me\Documents\Keyence\Finder.xlsm")

x.Sheets("Sheet1").Range("C18:I18").Copy

y.Sheets("Sheet1").Range("C3").PasteSpecial

End Sub

但是,每当我运行代码时,它都会从 Book.xlsx 复制代码并将其粘贴到正确的范围内,但在 Book.xlsx 中而不是在 Finder.xlsm 中。我在复制/粘贴部分之前还有一些单元格格式代码,并且该代码在 Finder.xlsm 和 Book.xlsx 中都执行。

感谢您的时间。

标签: excelvba

解决方案


因为您没有指定范围在哪个工作表中,Excel 开始猜测您的意思是该范围在哪个工作表中(它可能会猜错)。

所以最好总是指定一个工作簿(如果不同于ThisWorkbook)和范围所在的工作表。

例如:

ThisWorkbook.Worksheets("SheetName").Range("C2").Value = "Measurement"

如果您多次使用同一张工作表,最好为它设置一个变量(或至少使用一条With语句:

Dim WsToFormat As Worksheet
Set WsToFormat = ThisWorkbook.Worksheets("SheetName")

With WsToFormat
    .Range("C2").Value = "Measurement"
    .Range("C2").ColumnWidth = 13
End With

注意.开头的点.Range表示触发With语句。


推荐阅读