2014-03-28 81 views
1

我試圖創建一個VBA腳本,這樣如果有人類型的「大小」,將粘貼「大小」的5倍,如果他們輸入「SizeColor」這將粘貼5「SizeColor」細胞。Excel的VBA腳本 - 的InputBox錯誤

而且如果可能的話,如果我能得到這樣的事情,如果不是「大小」或「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

易第一部分:在'End Sub'之前,插入'Else',然後msgbox說他們只能輸入___。你真的想要超過122欄輸入五個值嗎? –

+0

這將導致有趣的行爲,想象你編寫另一個腳本,將選定的值設置爲不同的單元格,然後執行您的預期。然後這超過了122個空格偏移量......避免選擇,如果可以的話。 – sten

回答

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 
+1

在轉到TRYAGAIN線壞了,我想如果你告訴我,爲什麼它打破瞭然後解決它,我喜歡,但如果沒有這很好。 – user3472455

+0

我測試過之後做了一些修改。它被打破,因爲沒有名爲'TryAgain的標籤:'。我補充說,上面的'VAL =輸入框(...'行。 –

+0

使用修改後的代碼,我認爲應該這樣做。假設你想要的值把122列的權利,5行了。 –