excel - 模块在错误的工作簿中运行
问题描述
所以我试图从一个工作簿中复制一些单元格并使用以下代码将它们粘贴到另一个工作簿中:
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 中都执行。
感谢您的时间。
解决方案
因为您没有指定范围在哪个工作表中,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
语句。
推荐阅读
- tinkerpop - tinkerpop 驱动程序 - janusgraph 丢失数据 - 未存储新顶点
- c++ - 为 C++ 函数编写 gcc 属性的替代方法?
- dataframe - 如何在pyspark数据框中创建包含列表值总和的列
- postgresql - 来自 kafka-connect 的 Postgres 复制槽已满
- python - 从 Python 中的 Dataframe 中的单个列获取唯一值
- javascript - 无法从 Storybook 中的 Vuex 商店读取
- c# - 应用 TextWrapping 后如何获得具有内联元素支持的 TextBlock 行?
- spring-boot - 使用代理进行 Springboot 协议测试
- javascript - 按钮 2 显示与按钮 1 显示相同的文本
- php - 如何将页面分配给子页面