[英]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.