2016-08-22 41 views
0

我想繪製一些數據,我的代碼非常簡單,這個想法只是爲了實現這個目的,我想繪製兩列,我用四個收件箱接收它們,如下所示:如何解決以下錯誤繪圖?

first = InputBox("first range", "Enter first range") 
    first1 = InputBox("second range", "Enter second range") 
    two = InputBox("second range", "Enter second range") 
    two1 = InputBox("second range", "Enter second range") 

我的完整代碼如下:

Sub ALL() 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim objChrt As ChartObject 
    Dim chrt As Chart 

    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     first = InputBox("first range", "Enter first range") 
     first1 = InputBox("second range", "Enter second range") 
     two = InputBox("second range", "Enter second range") 
     two1 = InputBox("second range", "Enter second range") 
     Set rng = .Range("first:first1,two:two1") 
     .Shapes.AddChart 
     Set objChrt = .ChartObjects(.ChartObjects.Count) 
     Set chrt = objChrt.Chart 

     With chrt 
      .ChartType = xlColumnClustered 
      .SetSourceData Source:=rng 
      End With 
     End With 
End Sub 

我的代碼看起來工作得很好,但是當我想在宏運行它,我進入以下範圍

A2 
A4 
B2 
B4 

在相應的框中,我按回車,我在下面的行得到一個錯誤:

設置RNG = .Range(「第一:first1,二:two1」)

我不能修復這個錯誤,我非常感謝任何建議,以克服這種情況,感謝任何如何。

+0

變化'.Range( 「第一:first1,二:two1」)''到.Range(第一和 「:」 &first1,二&「: 「&two1)' – cyboashu

+0

感謝您的支持,讓我檢查一下。 – neo33

回答

1

你的錯誤是由於在雙引號內傳遞所有變量,所以他們評估爲字符串。

enter image description here

用的InputBox你可以從表本身選擇整個範圍略有變化。

Set rng = Application.InputBox(prompt:="Test", Type:=8) 

參見此:https://msdn.microsoft.com/en-us/library/office/ff839468.aspx

Sub test() 

    Dim rng As Range 

    first = "A2" 
    first1 = "A4" 
    two = "B2" 
    two1 = "B4" 

    '/Error 
    Set rng = Range("first:first1,two:two1") 

    '/Valid 
    Set rng = Range(first & ":" & first1, two & ":" & two1) 

    '/ Robust way 
    Set rng = Application.InputBox(prompt:="Sample", Type:=8) 

End Sub 
+0

我真的很感激支持讓我驗證這一點。 – neo33