【问题标题】:Dynamically selecting cells in Excel Worksheet using VBA使用 VBA 在 Excel 工作表中动态选择单元格
【发布时间】:2017-01-17 23:11:11
【问题描述】:

我正在创建月份日历。用户可以选择他们想要的月份的年份。当用户选择创建一个月时,我想选择该月的所有工作日并为其指定一个命名范围。如何为选定的月份和年份选择一系列单元格并为其指定一个命名范围?

这是录制的宏(2016 年 1 月),但我不确定如何以编程方式创建它。我不能重复使用它,因为如果用户选择不同的月份或年份,那么我将不知道哪些行列包含工作日。

range( _
    "C9:D9,E9:F9,G9:H9,I9:J9,K9:L9,C11:D11,E11:F11,G11:H11,I11:J11,K11:L11,C13:D13,E13:F13,G13:H13,I13:J13,K13:L13,C15:D15,E15:F15,G15:H15,I15:J15,K15:L15,C17:D17,E17:F17" _
    ).Select
range("E17").Activate
ActiveWorkbook.Names.Add Name:="Test", RefersToR1C1:= _
    "=PTO!R9C3,PTO!R9C5,PTO!R9C7,PTO!R9C9,PTO!R9C11,PTO!R11C3,PTO!R11C5,PTO!R11C7,PTO!R11C9,PTO!R11C11,PTO!R13C3,PTO!R13C5,PTO!R13C7,PTO!R13C9,PTO!R13C11,PTO!R15C3,PTO!R15C5,PTO!R15C7,PTO!R15C9,PTO!R15C11,PTO!R17C3,PTO!R17C5"

----我的代码示例----

For x = 1 to 42
    ' Determine where the 1st day falls
    ' Is it a weekday? Add my coordinates to an array so I can create a named range later.
Next x

CreateNamedRange(weekdayArray)

【问题讨论】:

  • 请附上工作簿(一部分)的屏幕截图,以查看工作表的组织方式。
  • 不确定我是否理解您的要求。当用户在一张纸上按下按钮时,我创建了一张新纸,然后从 A3 开始,我输入了一个数字,代表我所在月份的日期。因此,如果该月的第一天从星期五开始,我会移动 6 列,然后在下一列(星期六)放置一个,然后放置一个 2。然后在下一行,A4(星期日),我放了一个 3,依此类推。这有帮助吗?
  • 我已添加到我的问题中。希望对您有所帮助。

标签: excel vba


【解决方案1】:

如果要将选定范围分配给变量Test,可以使用以下命令:

ActiveWorkbook.Names.Add Name:="Test", RefersTo:="=" & ActiveSheet.Name & "!" & Selection.Address

如果没有关于工作簿结构的更多信息,我们无法帮助您选择基于另一个单元格的特定单元格。

【讨论】:

  • 我已添加到我的问题中。希望对您有所帮助。
  • 好的,请告诉我,现在程序将如何在这个命名范围内,哪些天不应该?
  • 所有工作日都应在指定范围内。
  • 在这个weekdayArray 数组中,对吧?你能多说一些吗?里面的一些值的例子?值类型是DateString,或者可能是Integer
  • weekdayArray 中的值是对应于工作日所在位置的坐标字符串 (9,1; 9,3; 9,5...)。如果您查看我的问题中的图片,我将创建用户从下拉列表中选择的月份。然后,在创建月份之后,我想选择所有工作日(我为这个问题突出显示灰色)并给它一个命名范围。
猜你喜欢
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多