Vba 当选择其他工作表或工作簿时,尝试使用此工作簿设置范围值时出现问题

Vba 当选择其他工作表或工作簿时,尝试使用此工作簿设置范围值时出现问题,vba,excel,Vba,Excel,如果选择了除sheet1之外的其他工作表或工作簿,为什么执行宏时代码不起作用?我需要这种格式的代码,以便以后可以将单元格条目中的值更改为变量。有办法解决这个问题吗 Sub testhsa() ThisWorkbook.Sheets("Sheet1").Range(Cells(1, 1), Cells(2, 2)).Value = 1 End Sub 它不起作用,因为您没有限定语句的单元格组件 您需要以下内容-注意单元格前面的: With ThisWorkbook.Sheets("She

如果选择了除sheet1之外的其他工作表或工作簿,为什么执行宏时代码不起作用?我需要这种格式的代码,以便以后可以将单元格条目中的值更改为变量。有办法解决这个问题吗

Sub testhsa()
    ThisWorkbook.Sheets("Sheet1").Range(Cells(1, 1), Cells(2, 2)).Value = 1
End Sub

它不起作用,因为您没有限定语句的
单元格
组件

您需要以下内容-注意
单元格前面的

With ThisWorkbook.Sheets("Sheet1")
    .Range(.Cells(1,1), .Cells(2, 2)).Value = 1
End With
编辑:进一步澄清评论。 通过将
从工作表/区域/单元格中退出,可以告诉Excel您需要活动的父级。Ie
单元格(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的正确建议,将其分配给变量。

我强烈建议为您的对象使用变量。它使了解您正在做什么变得更加容易,并显著地清理您的代码

您可以使用以下代码作为模板:

Sub OperateOnInactiveSheet()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim rng As Range
    Dim writeThis as string

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1")
    Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(2, 2))
    writeThis = "foo"

    rng.Value = writeThis
End Sub

+1-这解决了问题。我添加了一个语法稍有不同的选项。这非常完美。感谢您帮助新手走上正确的道路。为了让我更好地理解,无论您在哪个工作簿或工作表中,单元格之前的时间段是否允许选择这些单元格,就像.Range对象限定宏正在运行的工作簿中的选择范围一样?换句话说,这有点像写工作簿。工作表(“Sheet1”)。单元格(值)。值,只是单元格被限定在范围对象内?没问题,我已经编辑了关于您评论的答案。你应该使用它,除了从餐饮部负责人那里得到的额外好处,谢谢你的餐饮部负责人。这个模板将帮助我编写一些更难的代码。