If Worksheets("HR-Calc").Range("L2") = "01+" Then
Application.ScreenUpdating = False
Range("A7").FormulaR1C1 = "1"
Range("A8").FormulaR1C1 = "2"
Range("A9").FormulaR1C1 = "3"
Range("A10").FormulaR1C1 = "4"
Range("A11").FormulaR1C1 = "5"
Range("A12").FormulaR1C1 = "6"
Range("A13").FormulaR1C1 = "7"
Range("A14").FormulaR1C1 = "8"
Range("A15").FormulaR1C1 = "9"
Range("A16").FormulaR1C1 = "10"
Range("A17").FormulaR1C1 = "11"
Range("A18").FormulaR1C1 = "12"
Range("A19").FormulaR1C1 = "13"
Range("A20").FormulaR1C1 = "14"
Range("A21").FormulaR1C1 = "15"
Range("A22").FormulaR1C1 = "16"
Range("A23").FormulaR1C1 = "17"
Range("A24").FormulaR1C1 = "18"
Range("A25").FormulaR1C1 = "19"
Range("A26").FormulaR1C1 = "20"
Range("A27").FormulaR1C1 = "21"
Range("A28").FormulaR1C1 = "22"
Range("A29").FormulaR1C1 = "23"
Range("A30").FormulaR1C1 = "24"
Range("A31").FormulaR1C1 = "25"
Range("A32").FormulaR1C1 = "26"
Range("A33").FormulaR1C1 = "27"
Range("A34").FormulaR1C1 = "28"
Range("A35").FormulaR1C1 = "29"
Range("A36").FormulaR1C1 = "30"
Range("A37").FormulaR1C1 = "31"
Range("A38").FormulaR1C1 = "32"
Range("A39").FormulaR1C1 = "33"
Range("A40").FormulaR1C1 = "34"
Range("A41").FormulaR1C1 = "35"
Range("A42").FormulaR1C1 = "36"
' maximum nuber of strings is currently 36. To increase follow pattern shown ie A43/37 , A44/38 etc etc.
'if maximum is changed it must be changed in all string format sections 01, 01/02, 01/02/03, & 01/02/03/04
If Worksheets("HR-Calc").Range("F2") = "STAGGER" Then
Range("C7").FormulaR1C1 = "STR.01+"
Range("C8").FormulaR1C1 = "STR.02+"
Range("C9").FormulaR1C1 = "STR.03+"
Range("C10").FormulaR1C1 = "STR.04+"
Range("C11").FormulaR1C1 = "STR.05+"
Range("C12").FormulaR1C1 = "STR.06+"
Range("C13").FormulaR1C1 = "STR.07+"
Range("C14").FormulaR1C1 = "STR.08+"
Range("C15").FormulaR1C1 = "STR.09+"
Range("C16").FormulaR1C1 = "STR.10+"
Range("C17").FormulaR1C1 = "STR.11+"
Range("C18").FormulaR1C1 = "STR.12+"
Range("C19").FormulaR1C1 = "STR.13+"
Range("C20").FormulaR1C1 = "STR.14+"
Range("C21").FormulaR1C1 = "STR.15+"
Range("C22").FormulaR1C1 = "STR.16+"
Range("C23").FormulaR1C1 = "STR.17+"
Range("C24").FormulaR1C1 = "STR.18+"
Range("C25").FormulaR1C1 = "STR.19+"
Range("C26").FormulaR1C1 = "STR.20+"
Range("C27").FormulaR1C1 = "STR.21+"
Range("C28").FormulaR1C1 = "STR.22+"
Range("C29").FormulaR1C1 = "STR.23+"
Range("C30").FormulaR1C1 = "STR.24+"
Range("C31").FormulaR1C1 = "STR.25+"
Range("C32").FormulaR1C1 = "STR.26+"
Range("C33").FormulaR1C1 = "STR.27+"
Range("C34").FormulaR1C1 = "STR.28+"
Range("C35").FormulaR1C1 = "STR.29+"
Range("C36").FormulaR1C1 = "STR.30+"
Range("C37").FormulaR1C1 = "STR.31+"
Range("C38").FormulaR1C1 = "STR.32+"
Range("C39").FormulaR1C1 = "STR.33+"
Range("C40").FormulaR1C1 = "STR.34+"
Range("C41").FormulaR1C1 = "STR.35+"
Range("C42").FormulaR1C1 = "STR.36+"
Else
Range("C7").FormulaR1C1 = "01+"
Range("C8").FormulaR1C1 = "02+"
Range("C9").FormulaR1C1 = "03+"
Range("C10").FormulaR1C1 = "04+"
Range("C11").FormulaR1C1 = "05+"
Range("C12").FormulaR1C1 = "06+"
Range("C13").FormulaR1C1 = "07+"
Range("C14").FormulaR1C1 = "08+"
Range("C15").FormulaR1C1 = "09+"
Range("C16").FormulaR1C1 = "10+"
Range("C17").FormulaR1C1 = "11+"
Range("C18").FormulaR1C1 = "12+"
Range("C19").FormulaR1C1 = "13+"
Range("C20").FormulaR1C1 = "14+"
Range("C21").FormulaR1C1 = "15+"
Range("C22").FormulaR1C1 = "16+"
Range("C23").FormulaR1C1 = "17+"
Range("C24").FormulaR1C1 = "18+"
Range("C25").FormulaR1C1 = "19+"
Range("C26").FormulaR1C1 = "20+"
Range("C27").FormulaR1C1 = "21+"
Range("C28").FormulaR1C1 = "22+"
Range("C29").FormulaR1C1 = "23+"
Range("C30").FormulaR1C1 = "24+"
Range("C31").FormulaR1C1 = "25+"
Range("C32").FormulaR1C1 = "26+"
Range("C33").FormulaR1C1 = "27+"
Range("C34").FormulaR1C1 = "28+"
Range("C35").FormulaR1C1 = "29+"
Range("C36").FormulaR1C1 = "30+"
Range("C37").FormulaR1C1 = "31+"
Range("C38").FormulaR1C1 = "32+"
Range("C39").FormulaR1C1 = "33+"
Range("C40").FormulaR1C1 = "34+"
Range("C41").FormulaR1C1 = "35+"
Range("C42").FormulaR1C1 = "36+"
End If
' only adds the positive string numbers to the list, all negative will be added later on in code
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------------------- 01+
' ---------------------------------------------------------------------------- 01/02+
ElseIf Worksheets("HR-Calc").Range("L2") = "01/02+" Then
Application.ScreenUpdating = False
'
Range("A7").FormulaR1C1 = "1"
Range("A8").FormulaR1C1 = "2"
Range("A9").FormulaR1C1 = "3"
Range("A10").FormulaR1C1 = "4"
Range("A11").FormulaR1C1 = "5"
Range("A12").FormulaR1C1 = "6"
Range("A13").FormulaR1C1 = "7"
Range("A14").FormulaR1C1 = "8"
Range("A15").FormulaR1C1 = "9"
Range("A16").FormulaR1C1 = "10"
Range("A17").FormulaR1C1 = "11"
Range("A18").FormulaR1C1 = "12"
Range("A19").FormulaR1C1 = "13"
Range("A20").FormulaR1C1 = "14"
Range("A21").FormulaR1C1 = "15"
Range("A22").FormulaR1C1 = "16"
Range("A23").FormulaR1C1 = "17"
Range("A24").FormulaR1C1 = "18"
If Worksheets("HR-Calc").Range("F2") = "STAGGER" Then
Range("C7").FormulaR1C1 = "STR.01/02+"
Range("C8").FormulaR1C1 = "STR.03/04+"
Range("C9").FormulaR1C1 = "STR.05/06+"
Range("C10").FormulaR1C1 = "STR.07/08+"
Range("C11").FormulaR1C1 = "STR.09/10+"
Range("C12").FormulaR1C1 = "STR.11/12+"
Range("C13").FormulaR1C1 = "STR.13/14+"
Range("C14").FormulaR1C1 = "STR.15/16+"
Range("C15").FormulaR1C1 = "STR.17/18+"
Range("C16").FormulaR1C1 = "STR.19/20+"
Range("C17").FormulaR1C1 = "STR.21/22+"
Range("C18").FormulaR1C1 = "STR.23/24+"
Range("C19").FormulaR1C1 = "STR.25/26+"
Range("C20").FormulaR1C1 = "STR.27/28+"
Range("C21").FormulaR1C1 = "STR.29/30+"
Range("C22").FormulaR1C1 = "STR.31/32+"
Range("C23").FormulaR1C1 = "STR.33/34+"
Range("C24").FormulaR1C1 = "STR.35/36+"
Else
Range("C7").FormulaR1C1 = "01/02+"
Range("C8").FormulaR1C1 = "03/04+"
Range("C9").FormulaR1C1 = "05/06+"
Range("C10").FormulaR1C1 = "07/08+"
Range("C11").FormulaR1C1 = "09/10+"
Range("C12").FormulaR1C1 = "11/12+"
Range("C13").FormulaR1C1 = "13/14+"
Range("C14").FormulaR1C1 = "15/16+"
Range("C15").FormulaR1C1 = "17/18+"
Range("C16").FormulaR1C1 = "19/20+"
Range("C17").FormulaR1C1 = "21/22+"
Range("C18").FormulaR1C1 = "23/24+"
Range("C19").FormulaR1C1 = "25/26+"
Range("C20").FormulaR1C1 = "27/28+"
Range("C21").FormulaR1C1 = "29/30+"
Range("C22").FormulaR1C1 = "31/32+"
Range("C23").FormulaR1C1 = "33/34+"
Range("C24").FormulaR1C1 = "35/36+"
End If
' only adds the positive string numbers to the list, all negative will be added later on in code
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------------------- 01/02+
显示的代码只有一半的宏,01+,01/02 +显示,但也有01/02/03 +和01/02/03/04 +。目前上面的代码工作得很好,唯一的问题是,如果我的列表中需要超过36个项目,我必须运行宏然后进入并手动添加更多数据点。由于不同的项目,我不得不三次扩展这个宏。单元格M2有最大数量的列表将会去(目前36),有没有更快的方式来做到这一点,而不是我的手动方法,它允许用户输入他们需要的任何数字?excel 2010宏根据用户的最大值生成列表
更新:循环代码(从拉尔夫一些帮助)。更清洁的方法和少得多的代码
' ---------------------------------------------------------------------------- 01+ string format
If Range("L2") = "01+" Then
Dim i As Integer
For i = 1 To Range("m2")
Cells(6 + i, 1).Value = 0 + i
If Worksheets("HR-Calc").Range("F2") = "STAGGER" Then
Range("c" & 6 + i).FormulaR1C1 = "STR." & Right("0" & i, 2) & "+"
Else
Range("c" & 6 + i).FormulaR1C1 = Right("0" & i, 2) & "+"
End If
Next i
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------------------- 01+
' ---------------------------------------------------------------------------- 01/02+ string format
ElseIf Range("L2") = "01/02+" Then
maxn = Range("m2")/2
For i = 1 To maxn
Cells(6 + i, 1).Value = 0 + i
If Worksheets("HR-Calc").Range("F2") = "STAGGER" Then
Range("c" & 6 + i).FormulaR1C1 = "STR." & Right("0" & (2 * i) - 1, 2) & "/" & Right("0" & (2 * i), 2) & "+"
Else
Range("c" & 6 + i).FormulaR1C1 = Right("0" & (2 * i) - 1, 2) & "/" & Right("0" & (2 * i), 2) & "+"
End If
Next i
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------------------- 01/02+
' ---------------------------------------------------------------------------- 01/02/03+ string format
ElseIf Range("L2") = "01/02/03+" Then
maxn = Range("m2")/3
For i = 1 To maxn
Cells(6 + i, 1).Value = 0 + i
If Worksheets("HR-Calc").Range("F2") = "STAGGER" Then
Range("c" & 6 + i).FormulaR1C1 = "STR." & Right("0" & (3 * i) - 2, 2) & "/" & Right("0" & (3 * i) - 1, 2) & "/" & Right("0" & (3 * i), 2) & "+"
Else
Range("c" & 6 + i).FormulaR1C1 = Right("0" & (3 * i) - 2, 2) & "/" & Right("0" & (3 * i) - 1, 2) & "/" & Right("0" & (3 * i), 2) & "+"
End If
Next i
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------------------- 01/02/03+
' ---------------------------------------------------------------------------- 01/02/03/04+ string format
ElseIf Range("L2") = "01/02/03/04+" Then
maxn = Round(Range("m2")/4, 0)
For i = 1 To maxn
Cells(6 + i, 1).Value = 0 + i
If Worksheets("HR-Calc").Range("F2") = "STAGGER" Then
Range("c" & 6 + i).FormulaR1C1 = "STR." & Right("0" & (4 * i) - 3, 2) & "/" & Right("0" & (4 * i) - 2, 2) & "/" & Right("0" & (4 * i) - 1, 2) & "/" & Right("0" & (4 * i), 2) & "+"
Else
Range("c" & 6 + i).FormulaR1C1 = Right("0" & (4 * i) - 3, 2) & "/" & Right("0" & (4 * i) - 2, 2) & "/" & Right("0" & (4 * i) - 1, 2) & "/" & Right("0" & (4 * i), 2) & "+"
End If
Next i
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------------------- 01/02/03/04+
End If
你可能要考虑循环(为你做的工作):http://www.homeandlearn.org/excel_vba_for_loops.html – Ralph
我得到了简单的1第一回路最大计数时,下一部分在结尾添加了“+”我没有运气,与组合数字相同(01/02 +) –
我在一个小代码片段下面添加了一些内容,只是为了向您展示如何使用“ +”。我想你会发现漂移,并且能够对其他“组合”数字做同样的处理。当您遇到任何严重问题时,请通知我们。此外,请更新您的问题以反映您的改进代码(您提到您已经能够完成某些工作)。 – Ralph