-1

現在、異なるシートから値を取得する 2 つのグラフを作成するマクロを作成しました。今はコードが多すぎると思います。そしてなんとか減らしたい。

ここに私のコードがあります

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 に答える