簡體   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