作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果选择了sheet1以外的其他工作表或工作簿,为什么代码在执行宏时不起作用?我需要这种格式的代码,以便稍后可以将单元格条目中的值更改为变量。有什么办法可以解决这个问题吗?
Sub testhsa()
ThisWorkbook.Sheets("Sheet1").Range(Cells(1, 1), Cells(2, 2)).Value = 1
End Sub
最佳答案
它不起作用,因为您没有限定语句的 Cells
组件。
您需要以下内容 - 请注意 Cells
之前的 .
:
With ThisWorkbook.Sheets("Sheet1")
.Range(.Cells(1,1), .Cells(2, 2)).Value = 1
End With
编辑:对评论的进一步澄清。通过将 .
保留在工作表/范围/单元格之外,您就告诉 Excel 您需要事件父级。即 Cells(1, 1)
与 ActiveSheet.Cells(1,1)
相同,而 Range("A1:D4")
是与ActiveSheet.Range("A1:D4")
相同。
With
语句有效地告诉 Excel,后面的任何内容都与该对象“关联”,因此我的 3 行代码与以下内容完全相同:
ThisWorkbook.Sheets("Sheet1").Range(ThisWorkbook.Sheets("Sheet1").Cells(1,1), ThisWorkbook.Sheets("Sheet1").Cells(2, 2)).Value = 1
这向 Excel 表明,无论 ActiveWorkbook
是什么,您都希望代码访问运行代码的工作簿中的范围。
最后,如果您经常使用范围,您会希望将它们分配给一个变量,正如 HeadofCatering 正确建议的那样。
关于vba - 选择其他工作表或工作簿时尝试使用 ThisWorkbook 设置范围值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712866/
我是一名优秀的程序员,十分优秀!