![](/img/trans.png)
[英]VBA IF NOT [function] then [code] runs code regardless of function output
[英]VBA: code runs but no output is generated
我有一个具有两张工作表的excel工作簿,分别为“仪表板供应商视图”和“ ComputingSolutions”。在仪表板供应商视图选项卡中,用户必须在命名单元格“ categoryName”中写下一个值。当用户写下“ Computing”时解决方案”,并运行代码,我希望代码转到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
好的,我想我有解决办法,因为这困扰着我。 我将您的环境设置为测试,发现由于某种原因, Names("categoryName").Value
返回单元格地址,即它返回Names("categoryName").RefersTo
。 尝试将.value
部分.RefersToRange.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
不幸的是,我对此行为没有任何解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.