Datenpunkte in einem Diagramm beschriften

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Label MsgBox
Bild

Betrifft: Datenpunkte in einem Diagramm beschriften von: Sabine
Geschrieben am: 23.02.2005 18:07:49

Hi!

Ich habe noch immer folgendes Problem:
Ich möchte die Punkte in einem Punkt-Diagramm beschriften, wobei die Tabelle wo die Beschriftungsinfos sind, eine andere als jene, wo das Diagramm ist, ist.
Ich habe hier eine Beispieldatei hochgeladen: https://www.herber.de/bbs/user/18585.xls

Der Code, den ich von Thom@sch bekommen habe, ist eingebaut, aber wenn ich auf die Schaltfläche klicke passiert nichts.
Ich habe auch das Problem, daß ich keine Werte aus einer anderen Tabelle in die Abfragemaske, die sich öffnet, wenn ich das Makro starte, hineinbekomme. Überdies nicht aus drei Spalten, wie ich es bräuchte.

Vielleicht gibt es ja jemanden, der sich der Sache widmen könnte, ich wäre euch wirklich sehr dankbar!!!

Sabine G.

Bild


Betrifft: AW: Datenpunkte in einem Diagramm beschriften von: Thom@sCH
Geschrieben am: 23.02.2005 19:14:39

Hi Sabine

Nur nicht so hastig!

Hier ist deine Mappe zurück. Wenn die Daten in Tab. "Koordinatenverzeichnis" geändert werden, wird die Beschriftung im Diagramm aktualisiert.
Die Anordnung der Beschriftung im Diagramm kann ich nicht verschieben.

Wenn du willst, kanns du bei mehreren Werten ein Texttrennzeichen einfügen. Dann einfach deaktiverten Code aktivieren und unteren Code aktivieren (Code in Sternchen).

Hoffe das es das gewünschte Problem ist.

https://www.herber.de/bbs/user/18623.xls


Gruss Thomas


Bild


Betrifft: AW: Datenpunkte in einem Diagramm beschriften von: Sabine
Geschrieben am: 23.02.2005 19:53:55

Hallo Thomas!!

Ja, ich bin ein wenig auf heissen Kohlen gesessen, entschuldige :-)
Nun denn,ich wollte gerade die Excel - Arbeitsmappe hochladen, nur ging das plötzlich nicht mehr...
Ich wollte den Code aktivieren, daß immer ein ";" dazwischenkommt. Beim Probieren kam dann allerdings eine Kompilierungs-Fehlermeldung.
Ist der Code in Sternchen so richtig aktiviert, oder hab ich da was falsch gemacht?:

Option Explicit



Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Startzelle As Range
    Dim ws As String
    Dim wksQ As Worksheet, wksZ As Worksheet
    Dim Spalte As Integer, Endezeile As Integer, Startzeile As Integer, j As Integer
    
    Application.ScreenUpdating = False
    Set wksQ = Worksheets("Koordinatenverzeichnis")
    Set wksZ = Worksheets("Flächenverzeichnis")
    Spalte = 2
    Startzeile = 9
    Endezeile = wksQ.Range("B9").End(xlDown).Row
                                    
    wksZ.ChartObjects(1).Activate
    For j = Startzeile To Endezeile
        With ActiveChart.SeriesCollection(1).Points(j - Startzeile + 1)
            .HasDataLabel = True
'*************************************************************************************************************
'Texttrennzeichen ";"
            .DataLabel.Text = Format(wksZQ.Cells(j, Spalte) & "; " & wksQ.Cells(j, Spalte + 1) & "; " & _
                wksQ.Cells(j, Spalte + 2).Value, "##0.0")
'**************************************************************************************************************
        'Ohne Textrennzeichen
 '           .DataLabel.Text = Format(wksQ.Cells(j, Spalte) & wksQ.Cells(j, Spalte + 1) & _
 '               wksQ.Cells(j, Spalte + 2).Value, "##0.0")
'**************************************************************************************************************
        End With
    Next j
    wksQ.Activate
    Application.ScreenUpdating = True
End Sub



Ansonsten funktioniert es gut, ICH DANKE DIR VIELMALS!!!

Sabine G.


Bild


Betrifft: AW: Datenpunkte in einem Diagramm beschriften von: Thom@sCH
Geschrieben am: 23.02.2005 19:58:16

Hi Sabine

Sorry, da hat sich noch ein Fehler eingeschlichen.

'*************************************************************************************************************
'Texttrennzeichen ";"
.DataLabel.Text = Format(wksZQ.Cells(j, Spalte) & "; " & wksQ.Cells(j, Spalte + 1) & "; " & _
wksQ.Cells(j, Spalte + 2).Value, "##0.0")
'**************************************************************************************************************

Statt "Format(wksZQ.Cells(j, Spalte)..." richtig "Format(wksQ.Cells(j, Spalte)" ohne Z

Jetzt muss es funkt.

Gruss Thomas


Bild


Betrifft: AW: Intresse von: Thom@sCH
Geschrieben am: 23.02.2005 20:03:41


Eigentlich geht mich das ja nichts an, aber als Förster würde mich interessieren wofür du dieses Flächenverzeichnis benötigst? Ist in Deutschland (oder wo) das Koordinationssystem -45877.76 / 237494.41?
Bei uns z.B. 650 150 / 228 500 = Kilometer-Koordinatenpunkte.

Musst mir aber nicht antworten

Gruss Thomas


Bild


Betrifft: Danke, jetzt funktionierts!! von: Sabine
Geschrieben am: 23.02.2005 20:12:01

Hi Thomas!

Danke!!!! Jetzt klappt es! Ich habe den Code ohne Trennzeichen einfach um die Trennzeichen erweitert, komischerweise ging´s nicht einfach das Z zu löschen.

Zu deiner Interessensfrage: Ich brauch das für´s Studium, wir haben da so ne Seminararbeit zu machen. Die Werte stammen aus dem Gauß-Krüger Koordinatensystem, Österreich, Meridianstreifen M31. Das ist in West-Salzburg, im Pinzgau.

VIELEN DANK!!

SabineG.


Bild


Betrifft: AW: Danke, jetzt funktionierts!! von: Thom@sCH
Geschrieben am: 23.02.2005 20:29:26

Hmm... hauptsache es klappt jetzt.

Na dann, viel Vergnügen und danke für die Rückmeldung.

Thomas


Bild


Betrifft: Leider ist ein weiteres Problem aufgetreten: von: Sabine
Geschrieben am: 23.02.2005 22:53:54

Hallo nochmal!

Will ich mehr Koordinatenbeschreibungen als Koordinatenpaare eingeben, dann weiß das Programm nicht was es mit der zusätzlichen Beschreibung anfangen soll und es kommt folgende Fehlermeldung:
Laufzeitfehler '1004':
Die HasDataLabel-Eigenschaft des Point-Objektes kann nicht festgelegt werden.

Kann man da im Code was ändern oder zumindest eine Error Handling Routine einfügen damit man eine Meldung bekommt dass zuviele Beschriftungen eingegeben wurden?

Vielen Dank nochmal!


Bild


Betrifft: AW: Leider ist ein weiteres Problem aufgetreten: von: Sabine
Geschrieben am: 23.02.2005 23:38:04

...und ist auch schon wieder erledigt.

habe folgendes eingefügt:

On Error GoTo Errorhandler (nach dem private Sub)
dann unten anstatt"End Sub" Exit Sub
dann Errorhandler:
MsgBox:" Hinweis, daß Koordinaten zuerst eingegeben werden müssen, dann die Bezeichnung"
End Sub.

DANKE, das war´s!


Bild


Betrifft: AW: Leider ist ein weiteres Problem aufgetreten: von: Thom@sCH
Geschrieben am: 24.02.2005 08:16:19

Guten Morgen

Ja, so kannst du es machen.

Das stimmt, das Makro läuft immer ab, wenn im Blatt Koordinaten... etwas verändert wird. Eine bessere (saubere) Lösung wäre, den Bereich festzulegen, wann das Makro ausgeführt werden soll mit irgend:

If Target.Address = "$B$9 : $C$57" Then Call Datenbeschriftung

Hab das aus dem Kopf geschrieben, nicht getestet, habe Vorlage nicht in Büro.
Kann erst am Abend testen.

Gruss Thomas


Bild


Betrifft: AW: Mit Target.Bereich von: Thom@sCH
Geschrieben am: 24.02.2005 12:39:18

Hallo Sabine

Probier diesen Code:


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Startzelle As Range
    Dim ws As String
    Dim wksQ As Worksheet, wksZ As Worksheet
    Dim Spalte As Integer, Endezeile As Integer, Startzeile As Integer, j As Integer
    
    Dim Bereich As Range
    Set Bereich = Range("B9:D56")
    If Not Intersect(Target, Bereich) Is Nothing Then 'Zelle ist im Bereich
        Application.ScreenUpdating = False
        Set wksQ = Worksheets("Koordinatenverzeichnis")
        Set wksZ = Worksheets("Flächenverzeichnis")
        Spalte = 2
        Startzeile = 9
        Endezeile = wksQ.Range("B9").End(xlDown).Row
                                        
        wksZ.ChartObjects(1).Activate
        For j = Startzeile To Endezeile
            With ActiveChart.SeriesCollection(1).Points(j - Startzeile + 1)
                .HasDataLabel = True
    '*************************************************************************************************************
            'Texttrennzeichen ";"
                .DataLabel.Text = Format(wksQ.Cells(j, Spalte) & "; " & wksQ.Cells(j, Spalte + 1) & "; " & _
                    wksQ.Cells(j, Spalte + 2).Value, "##0.0")
    '**************************************************************************************************************
            'Ohne Textrennzeichen
    '            .DataLabel.Text = Format(wksQ.Cells(j, Spalte) & wksQ.Cells(j, Spalte + 1) & _
    '                wksQ.Cells(j, Spalte + 2).Value, "##0.0")
    '**************************************************************************************************************
            End With
        Next j
        wksQ.Activate
        Application.ScreenUpdating = True
    End If
End Sub



Gruss Thomas


Bild


Betrifft: AW: Mit Target.Bereich von: Sabine
Geschrieben am: 24.02.2005 14:22:15

Hallo Thomas,

Ich habe den Code probiert, aber leider kommt die HasData... Fehlermeldung immer noch wenn ich eine neue Beschriftung eingebe aber in den Spalten rechts davon keine Koordinate ist.
Was hat der neue Code jetzt genau verändert?
Habe ich richtig verstanden, daß

If Not Intersect(Target, Bereich) Is Nothing Then 'Zelle ist im Bereich
Application.ScreenUpdating = False

bedeutet, daß wenn keine Koordinaten drinnen stehen, (und ev. die Bezeichnung für diese schon) das Diagramm nicht aktualisiert wird?

Also wie gesagt, die Meldung kommt nach wie vor...?!

Ausserdem MUSS in der ersten Spalte bei den Beschriftungen (z.B 15KK o.ä) was drinnen stehen, ansonsten wird die Beschriftung im Diagramm nicht geändert. Kann man da was machen?

Liebe Grüße,
Sabine


Bild


Betrifft: AW: Mit Target.Bereich von: Thom@sCH
Geschrieben am: 24.02.2005 18:17:03

Hallo Sabine

Das Makro wird nur ausgeführt, wenn im Bereich B9:D56 eine Veränderung statt findet.
Set Bereich = Range("B9:D56")
If Not Intersect(Target, Bereich) Is Nothing Then 'Zelle ist im Bereich

Ist also auch nicht die Lösung für dein Problem. Ist eigentlich logisch, das die Fehlermeldung "HasData" erscheint. Wo kein Datenpunkt ist, kann auch nichts geschrieben werden.

In dem Fall kannst wieder den alten Code verwenden und zu beginn (nach Dim) "On Error Resume Next" hineinschreiben (wie du bereits getan hast, ohne Anführungszeichen).

2. bin ich davon ausgegangen, das in der Spalte B9 immer einen Wert steht und in dieser Spalte B dann der letzte Eintrag gesucht wird. Du kannst folgendes ändern:

Endezeile = wksQ.Range("B9").End(xlDown).Row
in
Endzeile = 56
Durch On Error Resume Next werden die Fehler sowieso schon abgefangen.

Musst es also so machen, das zuerst die Koordinatenwerte eingegeben werten. Lösung wäre auch, die Koordinaten und Beschriftung zu vertauschen.

Hoffe, das ich mich verständlich ausgedrückt habe.

Gruss Thomas


Bild


Betrifft: Nun ist alles erledigt, DANKE! OT von: Sabine
Geschrieben am: 24.02.2005 19:00:02

Danke, Thomas,

ich denke es passt jetzt alles so wie es ist. Wie du sagst, durch OnError werden Fehler abgefangen.

Danke auf Jeden Fall!

Sabine


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Datenpunkte in einem Diagramm beschriften"