SORU
22 EKİM 2014, ÇARŞAMBA


Grafik çağrılar.SetSourceData hata 1004 ver

Benim şirkette Excel 2003'te oluşturulan bir uygulama ile ilgili bir sorun var. Uygulama bir kaynaktan veri alır ve bir Grafik bir VBA yordamı SetSourceData kullanarak bir Dizi ilgili verileri yazılı olduğu hücreler içeren geçirerek günceller.

Uygulama bu hata veriyor Office 2010 Office iyi uygulama çalıştırıldığında, 2003, ama çalışır:

Çalışma zamanı hatası '1004': Yöntemi 'SetSourceData' nesne'_Chart' başarısız oldu.

Ofiste basit bir Excel dosyası For bir döngü 2010 oluşturdum ve hata er ya da geç gelecektir Grafiğe sütun Aralığı geçti sayısına bağlı olarak. O kadar çabuk gelecek sütun Aralığı geçti. Bu Grafikte seri numarası(daha fazla sütun daha dizi) ile ilgili olmalı sanırım.

Bu mekanizma, bir çeşit Grafik/tampon veya Dizi ofiste uygulanan Office 2003 yılında var olmayan 2010 nesnedir? For aynı döngü hiç Office 2003 çalıştırıldığında bir sorun gösterir ve bu sorunu çözmek için nasıl emin değilim.

Ben, şimdiye kadar sadece mümkün silmek için tüm Seriyi kontrol Hata ile bir Goto talimat silmek için tüm serinin SeriesCollection kullanarak bir For Each döngü için seçin tüm eşyalar SeriesCollection Grafik. Ben bunu ve tekrar Aralığı geçtiğimde uygulamanın yürütülmesine devam ederse tüm verileri Grafik Nesnesi düzgün boyanır.

Örnek hata yeniden oluşturmak için.Aşağıdaki kod yeni bir Excel 2010 çalışma kitabı VBA modülü koymak için. setDataChart uygulama hata iletisi görüntülenir kadar devam edecek Alt çalıştırın.

    Sub setDataChart()
    Call createAColValues
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
    ActiveChart.SetSourceData Source:=Range("A1:FA6"), PlotBy:=xlColumns
    ActiveSheet.ChartObjects(1).Activate
    With ActiveChart.Parent
         .Height = 325
         .Width = 900
         .Top = 120
         .Left = 10
    End With
    Call updateValues
    Call sendData
End Sub

    Sub sendData()
    Dim cht As ChartObject
    Set cht = ActiveSheet.ChartObjects(1)

    'On Error GoTo delSeries:
    For i = 0 To 1000
        cht.Chart.SetSourceData Source:=ActiveSheet.Range("A1:FA6"), PlotBy:=xlColumns
    Next i
End Sub

Sub createAColValues()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("A1:A2").Select
    Selection.AutoFill Destination:=Range("A1:A6"), Type:=xlFillDefault
    Range("A1:A6").Select
End Sub

Sub updateValues()
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=RANDBETWEEN(0,10)"
    Range("B1").Select
    Selection.AutoFill Destination:=Range("B1:B6"), Type:=xlFillDefault
    Range("B1:B6").Select
    Selection.AutoFill Destination:=Range("B1:FA6"), Type:=xlFillDefault
    Range("B1:FA6").Select
End Sub

CEVAP
23 EKİM 2014, PERŞEMBE


Bu hata oluşur neden Adres yok. Bu geçici bir çözüm.

SetSourceData şu anda grafikte mevcut tüm seriyi sil çağırmadan önce, kod beklendiği gibi çalışır.

For j = cht.Chart.SeriesCollection.Count To 1 Step -1 
    cht.Chart.SeriesCollection(j).Delete
Next j

Hata en başta oluşur neden emin değilim, ama bu onu yok eder.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • dcigs

    dcigs

    9 EYLÜL 2006
  • Rachel Talbott

    Rachel Talbo

    26 Ocak 2011