【问题标题】:Set Value Dynamically Based on Column Header and Intersection of Target Row根据列标题和目标行的交集动态设置值
【发布时间】:2018-02-28 21:09:53
【问题描述】:

这个网站上的人非常有帮助,我希望有人可以帮助我弄清楚如何使用动态列标题在我的代码中分配一个值。我有一个子设置为双击前目标,所有目标都在 A 列中。现在我可以正常工作,使用偏移方法分配值。我需要从目标行中的单元格中提取数据,只要不移动列,那就太好了。但是,用户现在正在添加列,但我需要的列的标题不会更改。我现在需要将其更改为基于目标行和基于其标题的特定列的交集的动态查找。我可以设置找到我想要的列的值,但无法根据目标行正确提取数据。我认为 Intersect 属性会起作用,但它似乎不起作用,因为这是基于在一个范围内找到目标本身。我需要找到一个相对于目标的单元格,与基于标题的列相交。该值将在子的其他地方使用。我错过了哪一步?

这段代码在下面,你可以看到我现在有一个混合体,有些是基于列号的直接向上偏移,然后是我尝试使用分配的列名 nameCol 和 nameCol1 的另一个。偏移方法有效,但是当我尝试使用标题来定义在目标行上查看的位置时,它不起作用。谢谢。

Set nameCol = Range("A1:Z1").Find("Last")
Set nameCol1 = Range("A1:Z1").Find("First")
Set nameCol2 = Range("A1:Z1").Find("Name")
Set nameCol3 = Range("A1:Z1").Find("Date")


 'Check active column is column 1 (Where you want the macro to be called from)
  If Target.Column = 1 Then
    With Target
        sName = .Value
        sAction = .Offset(0, 24).Value + 365
        Set foundCell = .Offset(0, nameCol.Column)
        Set foundcell1 = .Offset(0, nameCol1.Column)
        Set foundcell3 = .Offset(0, 36)
        Set foundcell4 = .Offset(0, 35)
        sReason = .Offset(0, 6).Value
        foundcell2 = .Offset(0, 6)

【问题讨论】:

  • 设置 FoundCell = Cells(Target.Row,namecol.Column)
  • 天哪,回复太快了,太完美了!!!斯科特,非常感谢你!老实说,我整天坐在这里试图自己解决这些问题。然后我在这里发布并得到一个可以在几分钟内解决所有问题的答案!你们真棒!我之前确实尝试过 .row 属性,但当时我还没有定义我的名称列。所以我不断收到错误。现在,使用您的代码,它是一种享受,干杯!斯科特,您能否将您的回复发布为答案,以便我将其标记为已回答并获得信用?
  • sAction = .Offset(0, 24).Value + 365 试图在日期中添加年份?检查这个DateAdd函数。
  • 嘿,谢谢帕特里克,我要试试看!更多知识,我喜欢这个网站!

标签: vba dynamic offset


【解决方案1】:

这就是下面给出的答案: Set FoundCell = Cells(Target.Row,namecol.Column) --Scott Craner

【讨论】:

    猜你喜欢
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多