Excel VBA脚本 - InputBox错误

时间:2014-03-28 14:32:22

标签: excel vba excel-vba

我正在尝试创建一个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

1 个答案:

答案 0 :(得分:0)

正确声明您的变量。您无法在VBA中执行隐式类型分配,因此:

Dim val, Size, SizeC As String实际上意味着:

Dim Val as Variant, Size as Variant, SizeC As String

在任何情况下,您都不需要变量SizeSizeC,所以,让我们试试这个:

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