Infomeldung unterdrücken
#1
Hallo,
hat jemand eine Idee, wie ich folgende Infomeldung unterdrücken kann, die ich dem Anhang beigefügt habe?
Den Code, bei dem es auftritt hänge ich auch mal an.
Vielen dank im Voraus!
Code:
'Erzeugung des Graphen und Zuweisung der Daten aus dem Tabellenblatt "Gehaltsdaten"

Sub XErzeugungGraph()

   
   Call XLöschen
   Call XdatenKopieren
   
Dim data As Worksheet
Dim name As Range
Set data = ActiveWorkbook.Worksheets("Sternenhimmel")

Application.ScreenUpdating = False
Worksheets("Sternenhimmel").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=data.Range("A3:AC3000")

ActiveChart.SeriesCollection.NewSeries

   With ActiveChart.SeriesCollection(1)
   
       .XValues = "=Gehaltsdaten!$G$3:$G$800"
       .Values = "=Gehaltsdaten!$AC$3:$AC$800"
       .name = "=Gehaltsdaten!$B$3:$B$800"
       .Trendlines.Add Type:=xlLinear
     
   End With
 
ActiveChart.location Where:=xlLocationAsObject, _
  name:=ThisWorkbook.Worksheets(4).name
 
'Formatierung des Graphen
 
   With ActiveChart
   
       .PlotArea.Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
       .HasLegend = False
       .Parent.Height = 600
       .Parent.Width = 1200
       .HasTitle = True
       .HasTitle = False
       .Axes(xlCategory, xlPrimary).HasTitle = True
       .Axes(xlCategory, xlPrimary).AxisTitle.Characters.text = "Alter"
       .Axes(xlValue, xlPrimary).HasTitle = True
       .Axes(xlValue, xlPrimary).AxisTitle.Characters.text = "JEK 35H"
       .Axes(xlValue).MinimumScale = 0
       .Axes(xlCategory).MaximumScale = 80
       .SeriesCollection(1).Format.Fill.ForeColor.RGB = rgbBlue
   
       
   End With
   
Worksheets(4).ChartObjects(1).Activate

With ActiveChart

   .Axes(xlValue).AxisTitle.Font.Size = 20
   .Axes(xlCategory).AxisTitle.Font.Size = 20
   .PlotArea.Interior.ColorIndex = 15
   
       
End With

'Aufrufen des Programms zur Beschriftung der Datenpunkte

     Call XBeschriftungDiagramm
     Call XdatenLöschen
     
Sheets("Sternenhimmel").Select
Application.CutCopyMode = False


             
End Sub

'Beschriftet die Datenpunkte mit je dem ersten Buchstaben des Nach- und Vornamens

Sub XBeschriftungDiagramm()

Dim lngPunkt As Long
Dim data As Worksheet


Set data = ActiveWorkbook.Worksheets("Sternenhimmel")

                                   
  With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
     .ApplyDataLabels
     
     For lngPunkt = 1 To .Points.Count
     
        .Points(lngPunkt).DataLabel.text = Left(data.Cells(lngPunkt + 2, 2), 1) & " " & Mid(data.Cells(lngPunkt + 2, 3), 1, 1)
     
     
     Next lngPunkt
     
  End With
                                   
End Sub

Sub XLöschenDiagramm()
   ActiveSheet.ChartObjects(1).Delete
End Sub


Angehängte Dateien Thumbnail(s)
   
Top
#2
Zitat:hat jemand eine Idee, wie ich folgende Infomeldung unterdrücken kann


Jup. Beseite den Grund des ungültigen Bezugs. Welchen Sinn hat ein solcher?
Schöne Grüße
Berni
Top
#3
Hallo,

Zitat:hat jemand eine Idee, wie ich folgende Infomeldung unterdrücken kann

natürlich habe ich Ideen. Wie wäre es mit Beseitigung, nicht mit Unterdrückung?

vielleicht durch Code im Einzelschrittmodus durchlaufen lassen und so ermitteln, wo es hakt.
Dann kann man den oder die Fehler beseitigen.

Was aber so überhaupt nichts bringt ist in einer trüben Soße rumzurühren und darauf zu hoffen,
daß der Fehler zufällig an der Angel hängt.


Übrigens:
Der Fehler muß nicht unbedingt ursächlich in dem Codeteil zu finden sein, wo jetzt zufällig der
gelbe Hinweis auftaucht und / oder die Fehlermeldung erscheint. Im Prinzip kann ein Fehler auch
bereits im Workbook_Open vorbereitet worden sein und der erst viel später aktiv geschaltet wird,
weil erst jetzt eine bestimmte Abzweigung aktiviert wird.

Mit anderen Worten: Ohne Datei wird es eine sinnlose Raterei bleiben müssen.
Top
#4
Hallöchen,

in Deinem Code setzt Du nur für die Diagrammdaten Formeln ein.
Erste Frage bei dieser Fehlermeldung wäre, ob der Blattname vorhanden ist bzw. stimmt. Man macht da schnell mal ein Leerzeichen ans Ende ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Hallo Jonas,

Code:
Dim data As Worksheet
Dim name As Range
Set data = ActiveWorkbook.Worksheets("Sternenhimmel")

ActiveChart.SeriesCollection.NewSeries

  With ActiveChart.SeriesCollection(1)
 
      .XValues = "=Gehaltsdaten!$G$3:$G$800"
      .Values = "=Gehaltsdaten!$AC$3:$AC$800"
      .name = "=Gehaltsdaten!$B$3:$B$800"
      .Trendlines.Add Type:=xlLinear
   
  End With

ActiveChart.Location Where:=xlLocationAsObject, _
 name:=ThisWorkbook.Worksheets(4).name

du deklarierst hier eine Variable name vom Typ Range, verwendest sie aber nicht. Gleichzeitig aber ist name eine Eigenschaft von vielen Objekten. Ich halte dies für keine gute Idee, Variablennamen zu verwenden, die gleichlautend mit Objekten, Eigenschaften, Parametern und Methoden von Excel sind. Zu bemerken ist das hier (mal ohne Codetag, damit ich das fett markieren kann)

Zitat:      .name = "=Gehaltsdaten!$B$3:$B$800"
      .Trendlines.Add Type:=xlLinear
   
  End With

ActiveChart.Location Where:=xlLocationAsObject, _
 name:=ThisWorkbook.Worksheets(4).name

Bei dieser Eigenschaft bzw. Parameter wäre normalerweise der erste Buchstabe groß geschrieben.
Gruß Stefan
Win 10 / Office 2016
Top
#6
@Steffl,

ja da stimme ich dir zu. Ich werde dies in Zukunft berücksichtigen.


@schauan
Falls ich dich richtig verstanden habe, ich habe die Namen der Arbeitsblätter in der Mappe überprüft und diese müssten übereinstimmen.


@ Käpt'n Blaubär

Wenn ich den Code im Einzelschrittmodus duchlaufe wird mir kein Fehler angezeigt. Darüberhinaus habe ich auch mal die Events Workbook_Open und Worksheet_Change für das Datenblatt Gehaltsdaten auskommentiert, was jedoch auch nicht das Problem löst.


Ich verstehe momentan nicht recht warum "ungültige Bezüge" auf einmal vorliegen. Im Grunde genommen versuche ich ja lediglich Werte ohne Formelhinterlegung etc. nur von einem Blatt auf ein anderes zu kopieren.

Ich danke euch vielmals, ihr habt mir schon bei vielen Problemen geholfen, die ich hier in das Forum gepostet habe. DANKE!
Top
#7
Hallöchen,

probier mal

Sub Test()
MsgBox Sheets("Gehaltsdaten").Range("G3:G800").Address
End Sub

steht im zugewiesenen Bereich eventuell irgendwo #BEZUG?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
@schauan

Ich habe dein Makro ausgeführt und bekomme dabei "$G$3:$G$800" als MsgBox. Aus Interesse, was wolltest du dabei testen/wissen?
Ich konnte auch kein #BEZUG? in dem Bereich finden.
Top
#9
Hallöchen,

das sollte nur zeigen, ob der Name des Blattes wirklich korrekt ist. Allerdings ist das bei den Diagrammen doch recht putzig Sad Wenn man im Blatt per Makro eine Formel einsetzt wird gemosert. Beim Diagramm steht anschließend nur #BEZUG in der Datenquelle usw. und der Code läuft durch. Hätt' ich nicht gedacht.

Der Peter hat da ja schon was angedeutet - kommt denn die Fehlermeldung überhaupt bei der Ausführung des codes - davon bin ich bisher ausgegangen - , und wenn ja, in welcher Zeile?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste