提示值,然后复制但添加文本

我写了一个macros,提示用户input名称,然后input数字。 这用于填充标题行之后列G中的前3个单元格。 我真正需要的macros,然后重复这下三行,但添加10用户input的数字。

Sub Set_Tag() Dim Tag, TagName As String Dim x, TagNum As Integer TagName = InputBox("What is the product tag name? Ex. Apple", "Tag Name") TagNum = InputBox("What is the first product tag #? Ex. 500", "Tag #") Tag = TagName & "_" & TagNum x = Application.WorksheetFunction.CountIf(Range("J:J"), " ") ActiveSheet.Range("G2").Value = TagName & "_" & TagNum ActiveSheet.Range("G3").Value = TagName & "_" & TagNum & "_T" ActiveSheet.Range("G4").Value = TagName & "_" & TagNum & "_NE" End Sub 

因此,如果用户在两个提示中input示例Apple500 ,则单元格G2-G4将变为:

 Apple_100 Apple_100_T Apple_100_NE 

下一步是重复这个,直到到达第x行(总是3的倍数)。 所以如果x计数9行,则单元格G2-10中的值应该是:

 Apple_100 Apple_100_T Apple_100_NE Apple_110 Apple_110_T Apple_110_NE Apple_120 Apple_120_T Apple_120_NE 

我怎样才能改善我的macros观实现呢? 谢谢!

用下面的三行代替:

 With ActiveSheet.Range("G2") For i = 1 To x Step 3 .Item(i + 0) = TagName & "_" & TagNum + k .Item(i + 1) = TagName & "_" & TagNum + k & "_T" .Item(i + 2) = TagName & "_" & TagNum + k & "_NE" k = k + 10 Next End With 

和..

在顶部添加这一行:

 Dim i As Long, k As Long 

而已。

注意:作为一边你应该纠正你的Dim语句。 例如, Dim Tag, TagName As String指示VBA Tag是Varianttypes而不是String。 这同样适用于x 。 你的代码使得x变体,而不是整数。 最后,在这里使用Integers没有任何强制性的理由。 相反,你应该使用长裤。 VBA针对Longs进行了优化。