2016-08-15 27 views
0

你好,我想提出一个宏来绘制一些数据,关键是要接收来自用户的两列绘制,我第一次尝试用两个输入框得到这个值:如何使用活动列绘制以下数据?

first = InputBox("first column", "Enter a Column") 
two = InputBox("second column", "Enter a Column") 

这种方法的问题是我必须做的,以绘制如下:

Set rng = .Range(first + "2:" + first + "84," + two + "2:" + two + "84") 

这样做是为了获得价值则 与“2”和“84”这是我的范围串连它, 我想使这个宏更灵活,因为我总是使用从2到84的相同范围,我不'不懂很好活跃列,我想感谢任何建议,以克服这种情况,我的完整代码如下:

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

    Set ws = ThisWorkbook.Sheets("DATA") 

    With ws 
     first = InputBox("first column", "Enter a Column") 
     two = InputBox("second column", "Enter a Column") 
     Set rng = .Range(first + "2:" + first + "84," + two + "2:" + two + "84") 
     .Shapes.AddChart 
     Set objChrt = .ChartObjects(.ChartObjects.Count) 
     Set chrt = objChrt.Chart 

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

我不t完全可以得到这个问题,但也许你可以使用'Set rng = Application.InputBox(prompt:=“Select a cell”,Type:= 8)'https://msdn.microsoft.com/en-us/library/office /ff839468.aspx?f=255&MSPPError=-2147217396 – Slai

+0

谢谢,我很欣赏支持的主要想法是获得两个范围只是在飞行中选择列。只需选择两个具有相同尺寸的列。 – neo33

+0

您是否尝试过:'.SetSourceData Source:= Selection' –

回答

1

我还是不明白的问题,所以也许图片或例子可能会有帮助。
另一种方式来获得列的范围是这样

Set rng = ThisWorkbook.Sheets("DATA").Range("C2:C84") 
MsgBox rng.Columns("B").Address(0, 0) ' D2:D84 
MsgBox rng.Columns(-1).Address(0, 0) ' A2:A84 
MsgBox Union(rng.Columns(2), rng.Columns(4)).Address(0, 0) ' D2:D84,F2:F84 

如果数据例如在范围B2:D4并有周围只有空白单元格,那么你就可以得到那个范围内Range("C3").CurrentRegion

+0

这真的很有帮助,但是我只想选择两列,然后调用我的宏来绘制它们, – neo33

+0

这不是我想要的,但我觉得它确实有帮助。真的很感谢帮助。 – neo33

相关问题