0

我有一个脚本试图根据两个不同工作簿中 Excel 电子表格第一列中的标签号比较特定数据。当我尝试访问第一个工作簿时,它运行良好,我可以使用以下命令正确访问单元格中的数据:

s_WS_string = Workbooks(s_WS_Filename).Sheets(s_WS_SheetName).Range(s_WS_col & s_WS_row).Value 

其中s_WS_cols_WS_row是 VBA 脚本中定义的字符串。此命令成功检索数据。然而,

OURS_string = Workbooks("OURS.xlsx").Sheets("Sheet1").Range(s_OURS_col & s_OURS_row).Value

才不是。s_OURS_col并且s_OURS_row都是字符串。WS代表工作表,它是与静态工作表进行比较的变量工作OURS.xlsx表。

它们都是完全相同的命令,传递了完全相同类型的参数,但一个从单元格中检索数据,而另一个则没有。如果归根结底,我正在将其复制到另一个环境中以进行上传。

这两个字符串旨在相互比较,如果它们不匹配,则连接并输出到复制的工作表中。根据我的输出和我自己的调试,我发现它会在第一个电子表格上找到值,但在静态电子表格上OURS.xlsx,即使它访问包含完全相同数据的单元格,它也会保持为空,因此被认为不匹配。

有没有其他人看到这个问题?

编辑1:澄清了一些问题。

编辑 2:我知道必须打开两个工作簿才能以这种方式访问​​它们,并且我向您保证在脚本运行期间都打开了它们。

编辑 3:我已经逐步完成脚本,直到它传递参数以访问值。我已经检查了两个正在传递的单元格中的值,它们确实匹配,但是没有正确地从工作簿中拉出一个。

4

1 回答 1

0

至少有一个变量一定有问题。我用 2 个工作簿 Book1 和 Book2 重新创建了您的案例,并在每个工作簿的 Sheet1 的单元格 A1 中添加了一个值。代码运行良好。

Sub TestCellValueFromWBs()
    Dim s_WS_string, Ours_string As String
    s_WS_string = Workbooks("Book1").Sheets("Sheet1").Range("a1").Value
    MsgBox s_WS_string

    Ours_string = Workbooks("Book2").Sheets("Sheet1").Range("a1").Value
    MsgBox Ours_string
End Sub

进入您的代码 (F8) 并检查变量的值并确保它们指向正确的对象。

于 2012-05-11T16:31:22.750 回答