2016-10-17 7 views
-1

次のコードでは、1004エラーが発生しています。私が理解できないので、私はここで何が欠けているのか教えてください。デフォルトではエラー1004定義済みまたはオブジェクト定義エラー

Sub updatechart(Nombre As Variant) 
Dim cht As Chart 
Dim rng As Range 
Dim cmb As ComboBox 
Dim Fila As Integer 
Dim ser As Series 
Dim rng1 As Range 
Dim rng2 As Range 
Dim rngdata As Range 
Dim s As Integer 
Worksheets(2).Activate 
Set cmb = Sheets(2).ComboBox1 
Set cht = ActiveSheet.ChartObjects(1).Chart 
Set rngdata = Sheets(1).Range("b6:f370") 
semana = cmb.Value 
Fila = BuscaPalabra1(semana) 

For Each ser In cht.SeriesCollection 
    ser.Delete 
Next 

For s = 3 To rngdata.Columns.Count 
    Set ser = cht.SeriesCollection.NewSeries 
    Set rng1 = Sheets(1).Range(Cells(Fila, s), Cells(Fila + 7, s)) 
    Set rng2 = Sheets(1).Range(Cells(Fila, 2), Cells(Fila, 2)) 

    With ser 
     .XValues = rng2 
     .Values = rng1 
    'cht.SeriesCollection(contador).Select 
    ' cht.SetSourceData Source:=Sheets("datos").Range("rng1", "rng2") 

    End With 

Next 

End Sub 
+1

'シート(1)は'ワークシートですか?それとも、「チャート」ですか?チャートの場合は、そのセルの範囲を選択することはできません。 – YowE3K

+0

良い点@ YowE3K - 'Worksheet'オブジェクトを使って作業したいときは常に' Worksheets'コレクションを使うべきです。 'Sheets'コレクションには単なるワークシート以上のものがあります。 –

+1

@ Mat'sMug - シートとワークシートのコレクションの数値インデックスを使用することは、私のもう一つの嫌悪感です。ユーザーがシートを別の順序に移動させてコードを断片にするのは簡単です。 – YowE3K

答えて

1

通常のコードモジュール(ないシートのコードモジュール)からRange()またはCells()への呼び出し、それが特定のシートでそれらのすべてを修飾するのがベストですので、ActiveSheetを使用します。

With Sheets(1) 
    Set rng1 = .Range(.Cells(Fila, s), .Cells(Fila + 7, s)) 
    Set rng2 = .Cells(Fila, 2) 
End with 

rng1とrng2のような感じが違うのですが?

関連する問題