我有一张excel工作簿,有两张表,名为“Dashboard Supplier View”和“ComputingSolutions”。在仪表板供应商视图选项卡中,用户必须在命名单元格“categoryName”中记下一个值。当用户写入时在这个命名单元格中运行“计算解决方案”并运行代码,我希望代码转到ComputingSolutions工作表并将该工作表中A列中的所有供应商名称存储到一个数组中,然后打印出原始工作表中的所有供应商名称仪表板供应商视图。
“n”变量是指ComputingSolutions工作表上的命名单元格,是该工作表上的供应商数量。 (此号码已经写下,用户无需更改此内容)
当我运行代码时,没有任何显示。在指定位置的仪表板供应商视图表上未打印任何内容。我也没有错。我检查了所有名字,一切拼写正确。我不确定会出现什么问题,但我怀疑它与工作表的激活有关。
Public Sub DashboardSupplier()
Dim category As String
Dim supplierArray() As String
Dim c As Integer
Worksheets("Dashboard Supplier View").Activate
category = Names("categoryName").Value
'Suppliers for selectec category
If category = "Computing Solutions" Then
Worksheets("ComputingSolutions").Activate
n = Names("supplierAmount").Value
ReDim supplierArray(1 To n) As String
For c = 1 To n
supplierArray(c) = Cells(3 + c, 1)
Next c
Worksheets("Dashboard Supplier View").Activate
For c = 1 To n
Cells(6 + c, 4) = supplierArray(c)
Next c
End If
End Sub
答案 0 :(得分:2)
好吧,我想我有一个解决方案,因为它困扰着我。我将您的环境设置为测试,并发现由于某种原因,Names("categoryName").Value
返回了单元格地址,即它返回Names("categoryName").RefersTo
。尝试更换.value
的{{1}}部分,看看你是否有更好的运气。这是我的工作格式化代码:
.RefersToRange.Value
不幸的是,我没有解释这种行为。