【发布时间】:2017-09-07 19:56:08
【问题描述】:
我有一个电子表格,主要由 12 张表组成,对应于 1 月至 12 月。我正在尝试根据日期的 TextBox 条目和 ComboBox 的值选择来填充特定日期的工作表。每张纸在单独的范围内有 6 周。我希望扫描特定日期的所有范围,并使用基于 ComboBox 选择的值从找到的值向下填充 14 个单元格。 NewYearsHoliday 是 MM/DD/YYYY 格式的字符串值,相当于被扫描的值单元格。正在扫描的单元格在 Excel 中采用日期格式。范围对应于显示日期的单元格。 ComboBox 填充了一个 DefinedName 选项列表,该列表基于另一个工作表上的 OffSet 值。
Sub Holiday()
'Select Sheet
Sheets("Jan").Select
'Scan Cells for Dates Within Range
For Each Cell In ActiveSheet.Range("B3:H3,B19:H19,B35:H35,B51:H51,B67:H67,B83:H83")
'Set Column Value Based On ComboBox Selection
If Cell.Value = NewYearsHoliday Then
Cell.Select
ActiveCell.Offset(1, 0).Resize(14, 1).Select
Selection.Value = ComboBoxNewYears.Value
End If
Next
End Sub
我想让用户使用 MM/DD 格式在 TextBox 中指定日期工作表中的对应列与选定的值。
我知道元旦不会移动,但这是概念验证代码,将在一年中的所有假期重复。任何人都可以分享任何关于为什么我的代码没有按我预期填写的任何意见吗?
【问题讨论】:
-
Cell.Value 返回什么。我认为它类似于 40235,excel 存储日期的方式。如果是这样,您也必须将您的 NewYearsHoliday 转换为该值。使用
F9单步执行您的代码并将鼠标悬停在 Cell.Value 上以查看其值。 -
如果我创建一个显示它返回的单元格值的消息框。 MM/DD/YYYY 例如。单元格 B3 返回 2018 年 1 月 1 日。
-
通过在 if 语句中放置一个消息框来尝试查看是否有匹配项。
-
放入消息框帮了大忙。