Excel VBA脚本-输入框错误

Excel VBA脚本-输入框错误,vba,excel,Vba,Excel,我试图创建一个VBA脚本,这样如果有人键入“Size”,它将粘贴“Size”5次,如果他们键入“SizeColor”,它将粘贴5个“SizeColor”单元格 如果可能的话,如果我能得到这样的信息,如果用户输入的不是“大小”或“SizeColor”,那么他们会收到一条消息,说他们不能这样做 Sub SizeAndColor() Dim val, Size, SizeC As String Size = "Size" SizeC = "SizeColor" val = InputBox("Si

我试图创建一个VBA脚本,这样如果有人键入“Size”,它将粘贴“Size”5次,如果他们键入“SizeColor”,它将粘贴5个“SizeColor”单元格

如果可能的话,如果我能得到这样的信息,如果用户输入的不是“大小”或“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

正确声明变量。无法在VBA中执行隐式类型指定,因此:

Dim val、Size、SizeC作为字符串实际上意味着:

Dim Val作为变量,Size作为变量,SizeC作为字符串

在任何情况下,您都不需要变量
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

您在使用现有代码时遇到了哪些问题?有错误吗?简单的第一部分:在“结束子对象”之前,插入“Else”,然后msgbox说他们只能输入__;。你真的想通过122列输入这五个值吗?这将导致有趣的行为,想象你写了另一个脚本,将所选值设置为不同的单元格,而不是你所期望的。然后这个偏移超过122个空间。。。如果可以,请避免选择。问题是,我将始终从正确的单元格中使用它,我的功能区中有它,这样我就不会意外地按某个键粘贴它。GoTo-TryAgain行已断开,我希望您能告诉我它断开的原因,然后为我修复它,但如果没有,那很好。我在测试后做了一些更改。它已损坏,因为没有名为
TryAgain:
的标签。我在
val=inputBox(…
行)上方添加了该值。使用修订后的代码,我认为应该可以。假设您希望值向右放置122列,向下放置5行。感谢您的帮助,它不允许我键入“SizeColor”我尝试创建另一个案例,但我一直出错。输入错误。在案例陈述中,让它说
案例“大小”,“大小颜色”
(全部小写)。这应该可以解决问题。我的错!!