2016-08-22 94 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