我正在尝试创建一个VBA脚本,这样如果某人键入“Size”,它将粘贴“Size”5次,如果他们输入“SizeColor”,它将粘贴5个“SizeColor”单元格。
如果可能的话,如果我可以获得类似的东西,如果用户输入“Size”或“SizeColor”以外的任何内容,那么他们会收到一条消息,说他们不能这样做。
Sub SizeAndColor()
Dim val, Size, SizeC As String
Size = "Size"
SizeC = "SizeColor"
val = InputBox("Size or SizeColor?", "Options")
If val = "Size" Then
ActiveCell.Offset(0, 122).Select
ActiveCell.Value = Size
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Size
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Size
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Size
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Size
ActiveCell.Offset(5, -122).Select
Else: val = "SizeColor"
ActiveCell.Offset(0, 122).Select
ActiveCell.Value = SizeC
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = SizeC
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = SizeC
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = SizeC
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = SizeC
ActiveCell.Offset(5, -122).Select
End If
End Sub
答案 0 :(得分:0)
正确声明您的变量。您无法在VBA中执行隐式类型分配,因此:
Dim val, Size, SizeC As String
实际上意味着:
Dim Val as Variant, Size as Variant, SizeC As String
。
在任何情况下,您都不需要变量Size
或SizeC
,所以,让我们试试这个:
Sub SizeAndColor()
Dim val As String 'Input box value
Dim cl As Range
Set cl = ActiveCell
TryAgain:
val = InputBox("Size or SizeColor?", "Options")
Select Case LCase(val) 'Assuming you don't care about case sensitivity, SIZE = size, etc.
Case "size", "sizecolor"
'## Put the values 122 columns to the right, and 5 rows down
cl.Offset(0, 122).Resize(5, 1).Value = val
cl.Select
Case Else
'Do NOT allow any other inputs:
If MsgBox("You have entered an invalid input. Please input only 'Size' or 'SizeColor'. Try again?", vbYesNo) = vbYes Then
GoTo TryAgain
Else:
Exit Sub
End If
End Select
End Sub