繁体   English   中英

如何将宏分配给 Excel 中的表格列?

[英]How to assign macro to a table column in Excel?

目前我正在创建一个宏,它从表列中读取数据,资产编号。数据是通过下拉菜单通过另一张表中的另一个表的数据验证获得的,DieMaster。

然后它将执行索引和匹配以从 DieMaster 中找到匹配的数据并将其插入到描述列中。

此外,在获取数据后,表列将作为值进行复制和粘贴以获取数据。 这样公式就不会减慢过滤器搜索的速度。

这是我想出的。

Sub convert()

Dim osh As Worksheet
Set osh = ActiveSheet
osh.Range("ProjectEntry[Description]").Formula = "=IF(ISNA(INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2)),"""",INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2))"
osh.Range("ProjectEntry[Description]").Copy
osh.Range("ProjectEntry[Description]").PasteSpecial xlPasteValues

End Sub

我已经测试了宏,它运行良好。 但是,我现在遇到的问题是尝试将宏分配给 Asset No 列。 我的计划是拥有它,以便当通过上述下拉菜单在“资产编号”列中的单元格中选择一个值时,它会自动向我显示用于描述的数据。

由于我无法使用传统方法将宏分配给列,是否有替代方法?

您可以使用Worksheet_Change事件来完成此操作:

Private Sub Worksheet_Change(Target as Range)

If Not Intersect(Target, Me.ListObjects("ProjectEntry").ListColumns("AssetNo").DataBodyRange) Is Nothing Then 

     With Me.Range("ProjectEntry[Description]") 
        .Formula = "=IF(ISNA(INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2)),"""",INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2))"
        .Value = .Value
     End With

End If

End Sub

我的语法可能有点偏差(因为我不在我的普通电脑上),但它会让你足够接近你自己调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM