-1

现在我制作了一个宏,它创建了两个从不同工作表中获取值的图表。我认为现在代码太多了。我想以某种方式减少它。

这是我的代码

Sub AddChart(namn As String, UxV As String, UyV As String, AxV As String, AyV As String, ExV As     String, EyV As String, CA As Integer)

With ThisWorkbook.Worksheets("Chart").ChartObjects.Add(200, 200, 600, 400).Chart
    .Parent.Name = namn

    If Not .HasTitle Then
        .HasTitle = True
        .ChartTitle.Text = namn
    End If

    .ChartType = xlXYScatterSmoothNoMarkers
    .Axes(xlValue).CrossesAt = CA
    .Axes(xlCategory).TickLabels.NumberFormat = "YYYY-MM-DD"

    With .SeriesCollection.NewSeries
        .Name = "Us"
        .XValues = UxV
        .Values = UyV
    End With

    With .SeriesCollection.NewSeries
        .Name = "Ai"
        .XValues = AxV
        .Values = AyV
    End With

    With .SeriesCollection.NewSeries
         .Name = "Eu"
         .XValues = ExV
         .Values = EyV
    End With
End With
End Sub
--------------------

Sub calsub()


Dim n As String
Dim CA As Integer
Dim UxT As String
Dim UyT As String
Dim AxT As String
Dim AyT As String
Dim ExT As String
Dim EyT As String

Dim n2 As String
Dim CA2 As Integer
Dim UxP As String
Dim UyP As String
Dim AxP As String
Dim AyP As String
Dim ExP As String
Dim EyP As String

n = "Temperature"
SxT = "=US!A2:A372"
SyT = "=US!C2:C370"
NxT = "=AI!A2:A472"
NyT = "=AI!C2:C472"
FxT = "=EU!A2:A572"
FyT = "=EU!C2:C572"
CA = -20

n2 = "Precipitation"
SxP = "=US!A2:A372"
SyP = "=US!D2:D372"
NxP = "=AI!A2:A371"
NyP = "=AI!D2:D371"
FxP = ""
FyP = ""
CA = -100

Call AddChart(n, UxT, UyT, AxT, AyT, ExT, EyT, CA)
Call AddChart(n2, UxP, UyP, AxP, AyP, ExP, EyP, CA)

End Sub

我正在考虑以某种方式在下面创建它

Sub AddChart(namn As String, xV() As String, yV() As String, CA As Integer) <------

With ThisWorkbook.Worksheets("Chart").ChartObjects.Add(200, 200, 600, 400).Chart
    .Parent.Name = namn

    If Not .HasTitle Then
        .HasTitle = True
        .ChartTitle.Text = namn
    End If

    .ChartType = xlXYScatterSmoothNoMarkers
    .Axes(xlValue).CrossesAt = CA
    .Axes(xlCategory).TickLabels.NumberFormat = "YYYY-MM-DD"

for -----------> 

    With .SeriesCollection.NewSeries
        .Name = "Us"
        .XValues = UxV
        .Values = UyV
    End With

next <-----------

End With
End Sub
4

1 回答 1

1

好吧,如果你的范围保持不变,你可以使用类似的东西

For each wks in activeworkbook.worksheets 

或者组成一组相关的工作表来循环遍历。

那么你会有

.Name = wksArray(i).name或者.Name = wks.name不是 `.Name = "Us"'

您的数组也可以是多维的,因此您可以编写如下代码:

    .Name = array(i,1).name
    .XValues = array(i,2)
    .Values = array(i,3)
于 2012-09-19T13:13:30.237 回答