VBA:代码运行但没有生成输出

时间:2016-08-01 15:43:13

标签: vba excel-vba excel

我有一张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

1 个答案:

答案 0 :(得分:2)

好吧,我想我有一个解决方案,因为它困扰着我。我将您的环境设置为测试,并发现由于某种原因,Names("categoryName").Value返回了单元格地址,即它返回Names("categoryName").RefersTo。尝试更换.value的{​​{1}}部分,看看你是否有更好的运气。这是我的工作格式化代码:

.RefersToRange.Value

不幸的是,我没有解释这种行为。