多用于和下一个VBAfunction
我想创build一个简短的代码,希望能节省一些打字时间。
我想实现的是一个VBA函数,它将一个变化的值插入A列的每个单元格中
该值可以用“Wk”(短周期)后跟“17”(这是年份),后面跟着一个星期数字“01”的前缀来分解。 在一周中的每一天,这个重复7次,然后在下一个星期滚动,第二年不可避免地等等。
示例:单元格A1 = Wk1701单元格A2 = Wk1701
…单元格A8 = Wk1702
我确实收到下面的错误,所以我打开意见。
Sub Button1() For y = 1 To 1092 For w = 1 To 52 For x = 17 To 19 Cells(y, 1) = "WK" & x & w Next y Next w Next x End Sub
亚伦
循环必须完全嵌套,不能从内部循环外循环。
你不需要成为一个循环只是一个计数器。
然后我们只给7个单元块分配相同的值。
我们使用Format(x,"00")
将1
变成01
。
即使它将ActiveSheet也分配给范围对象的父对象:
Sub Button1() dim y As Long, w As Long, x As Long,rws as Long y = 1 For x = 17 To 19 For w = 1 To 52 ActiveSheet.Cells(y, 1).Resize(7,1).Value = "WK" & Format(x,"00") & Format(w,"00") y = y + 7 Next w Next x End Sub
要更快地使用数组而不是多次引用工作表:
Sub Button1() Dim y As Long, w As Long, x As Long, z As Long, rws as Long Dim OtA() As Variant rws = (19-17+1)*52*7 ReDim OtA(1 To rws, 1 To 1) As Variant y = 1 For x = 17 To 19 For w = 1 To 52 For z = 1 To 7 OtA(y, 1) = "WK" & Format(x, "00") & Format(w, "00") y = y + 1 Next z Next w Next x ActiveSheet.Range("A1").Resize(UBound(OtA, 1)).Value = OtA End Sub