Range.Value 无法将单元格内容分配给 VBA 中的变量

Range.Value not working for assigning cell contents to variable in VBA

我正在用 VBA 编写我的第一个脚本,我很难将输入到单元格中的值分配给字符串变量,我使用消息框来测试问题出在哪里,它向我展示了我在正确的工作簿和正确的 sheet 中,但是 "A1" 中的值显示为空白,即使我在那里有一个文本值并确保我保存了工作簿,下面是我所拥有的:

Sub copyworksheet()

Dim sourceWorkbook As String 
Dim destinationWorkbook As String 

Dim folderName As String

destinationWorkbook = ActiveWorkbook.Name
Sheets(1).Activate

MsgBox Range("A1").Value        ' Shows blank when debugging
folderName = Range("A1").Value
MsgBox "Here is " & folderName  ' Shows "Here is " when debugging

End Sub

** 作为附加说明,A1 单元格包含 02Nov,我尝试更改此单元格的格式但未解决问题,目前单元格格式为文本

我认为这应该可以解决问题:

Sub copyworksheet()

Dim sourceWorkbook As String 
Dim destinationWorkbook As String 
Dim folderName As String

destinationWorkbook = ActiveWorkbook.Name

MsgBox Sheets(1).Range("A1").Value      'reference the Sheet absolutely when using Range  
folderName = Sheets(1).Range("A1").Value
MsgBox "Here is " & folderName  

End Sub

替代方法是使用 Cells

MsgBox Cells(1, 1).Value
folderName = Cells(1, 1).Value

Sheets(1)

指的是活动工作簿中的第一个选项卡。该选项卡可以是作品sheet、代码sheet 或图表sheet.

参考作品sheet最好用WorkSheets()。为确保您始终获得正确的 sheet,无论顺序如何,请使用名称:

WorkSheets("Sheet1")

最好的方法是使用 CodeName。这是用户无法更改的 sheet 的名称。它位于 VBA 中的 sheet 列表中:

()之前的部分是Codename。所以 Worksheets("Sheet1") 代号是 Sheet1。使用代码名称,我们只需键入 sheet 即可引用它:

Sheet1

这不能被用户轻易更改,就像 sheet 的名称一样。这将始终引用正确的 sheet,而不管 sheet.

的选项卡位置和名称如何

下一个:

不要使用 .Activate.Select 它们只会减慢代码速度。只需在范围内附加正确的 sheet 引用:

Worksheets("Sheet1").Range("A1")

或者更好的 CodeName:

Sheet1.Range("A1")