2016-08-01 43 views
0

我有一个Excel工作簿,其中有两张表,名为“Dashboard Supplier View”和“ComputingSolutions”。在仪表板供应商视图选项卡中,用户必须记下名称中的值cell“categoryName”。当用户在这个命名单元中写下“Computing Solutions”并运行代码时,我希望代码转到ComputingSolutions表单并将该表中列A中的所有供应商名称存储到数组中,以然后打印出原始工作表中的所有供应商名称仪表板供应商视图VBA:代码运行但没有生成输出

“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

'n'变量与命名单元格有什么关系?名为'n'的单元格是? –

+0

您是否尝试过调试?在“If category =”计算解决方案“然后”块中放置一个中断(例如) - 您的代码是否达到该点? –

+0

n通过n =名称(“supplierAmount”)引用指定的调用supplierAmount。值 –

回答

2

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

Public Sub DashboardSupplier() 
    Dim category As String 
    Dim supplierArray() As String 
    Dim c As Integer 
    Dim n As Long 
    Worksheets("Dashboard Supplier View").Activate 
    category = Range("categoryName").Value 
    'Suppliers for selectec category 
    If category = "Computing Solutions" Then 
     Worksheets("ComputingSolutions").Activate 
     n = CLng(Range("supplierAmount").Text) 
     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

这给了我运行时错误1004:应用程序定义或对象定义的错误。我复制了你的整个代码并使用它。我很困惑 –

+0

通过它,并告诉我在哪里弹出。 –

+0

这里:n =名称(“supplierAmount”)。RefersToRange.Value –