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

时间:2015-11-09 17:28:34

标签: excel vba excel-vba excel-2010

我写了一个宏,提示用户输入一个名字,然后输入一个数字。这用于填充标题行之后的列G中的前3个单元格。我真正需要宏做的是对接下来的3行重复这个,但是添加10用户输入的数字。

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

因此,如果用户在两个提示中输入示例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

如何改进我的宏来实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:1)

用这些替换底部的三行:

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是Variant类型而不是String。同样适用于x。您的代码使x成为Variant,而不是整数。最后,没有令人信服的理由在这里使用Integers。相反,你应该使用Longs。 VBA针对Longs进行了优化。