美好的一天。我对VBA很新,我手边有一些问题。 我目前正在自动化工作中的报告,其中大部分都与过滤数据有关,以显示当月,下个月以及接下来的2个月。
我的问题是:
如何过滤下拉框以取消勾选前几个月,勾选下个月(相对于当前月份),并勾选下一个月(无需硬编码)它必须在某个月结束。只需将其编码为可用的几个月)?例如,我的数据是2017年11月。我必须取消前几个月的汇率,包括11月,然后是2017年12月和未来几个月。
来自录制的宏:
11月作为当月(手动过滤)
ActiveSheet.Range("$A$1:$AY$18103").AutoFilter Field:=37, Operator:= _
xlFilterValues, Criteria2:=Array(0, "10/18/2018", 1, "12/28/2017")
我在其他进程中使用的当前月份代码。我也可以加入吗?
ActiveSheet.Range("$A$1:$AY$18103").AutoFilter Field:=36, Operator:=xlAnd, _
Criteria1:=">" & Application.EoMonth(Now, -1), _
Criteria2:="<=" & Application.EoMonth(Now, 0)
与no.1类似,取消前几个月的勾选,勾选当月的第二个月,并提前几个月进行勾选? (例如,我的数据是2017年11月。我必须取消前几个月的记录,包括11月,然后是2018年1月和未来几个月)
我要做的一个过程是将公式从单元格复制到左侧,然后将其粘贴到当前单元格。我的工作是先复制左边的单元格,然后使用 Ctrl + Down 转到底行。然后单击右键(返回原始列),然后再次 Ctrl + Shift + Up 粘贴到整列。我使用的代码是:
Range(Selection, Selection.End(xlUp)).Select
问题是原始列中的某些单元格已经填满了数据(来自我之前的过程),我必须至少编写该代码4次才能让单元格到达最上面的单元格。如何对其进行编码以使其达到顶部(减去带有单元格标题的行),同时注意这些行是否已过滤?
答案 0 :(得分:0)
你在一篇文章中提到了很多问题。但无论如何,对于你的1&amp; 2,您可以尝试以下内容:
Sub ject()
Dim lr As Long
Dim myRange As Range, selMonth As String
'*/ Below selects 1 month ahead of current month
'to select 2 months ahead, add 2 on Month(Date) */
selMonth = Format(DateSerial(Year(Date), Month(Date) + 1, 1), _
"m/d/yyyy")
With Sheet1 '/* change to your actual sheet */
.AutoFilterMode = False '/* reset all filters */
'/* reference last row to column A */
lr = .Range("A" & .Rows.Count).End(xlUp).Row
Set myRange = .Range("A1:AY" & lr)
myRange.AutoFilter 36, ">=" & selMonth
End With
End Sub
对于数字3,您可以使用与上面相同的例程来查找最后一行(和列),然后在那里粘贴数据。您还可以check this out了解有关查找目的地范围(单元格)的详情。