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")
我正在用 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")