我正在尝试自动化一个报告,对于客户来说,我有点困在需要克服的障碍之一,我有一些想法,但我是VB编程的新手。
要求是将一系列单元格从一个工作表复制到另一个工作表,但目标需要根据当前日期进行更改。使用一般示例我正在尝试实现以下目标:
如果日期是月份的第1天,目的地范围是B2:F3,如果是第2,那么目的地范围是B4:F5,如果第3个那么目的地是B6:F7 ......如果是31,那么目的地是B62:F63,源范围是静态的。
我想我可以通过编写一个包含每个月每天的IF语句的巨大脚本来实现这一目标,但我希望我能够更聪明一点,并使用变量在开头分配行引用。然后将脚本放回到select / copy语句中。
答案 0 :(得分:0)
绝对可以。
Dim x as Integer
Dim daymonth as Integer
Dim rw as String
daymonth = CInt(Format(date, "d"))
x = daymonth * 2
rw = CStr(x)
现在您可以使用以下范围:
Range("D" & rw & ":F" & CStr(x + 1))
只是一个例子。然后由于数字在两个范围之间是恒定的,只需将该数字添加到x并在范围内使用它。
答案 1 :(得分:0)
您可能需要以下子程序。
Sub copyDataDependOnDatte()
Dim today As Date, dayOfToday As Integer
Dim sWS As Worksheet, dWS As Worksheet
'set two worksheets to variables
Set sWS = Worksheets("source") 'Worksheet which has data to be copied
Set dWS = Worksheets("destination") 'Worksheet which is used to record data of days.
' get day of today
today = Now() 'get date of today
dayOfToday = Day(today) ' get day of today
Range(sWS.Cells(2, 2), sWS.Cells(3, 6)).Copy 'copy B2:F3 of worksheet "source"
dWS.Cells(dayOfToday * 2, 2).PasteSpecial ' paste to worksheet "destination" at place determined by day of today
End Sub
在这段代码中,我假设有以下用于编写concreat代码。
请更改工作表'命名为您的数据的真实姓名。
要复制的数据位置被描述为"范围(sWS.Cells(2,2),sWS.Cells(3,6))"在代码中。
细胞(2,2)表示第2行和第2列的细胞,即" B2"。
细胞(3,6)表示第3行和第6列的细胞,即" F3"
准备好正确的位置以适应您的数据。