Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1064to1068
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Diagramm: bei 'mouseover' best. Zelleninfo zeigen

Diagramm: bei 'mouseover' best. Zelleninfo zeigen
09.04.2009 07:59:14
Roland
Moin zusammen,
ich habe ein x,y-Diagramm mit allen Flugplätzen in Deutschland. Wenn man hier mit der Maus auf einen Wert zeigt, wird immer die dazugehörige Koordinate des Platzes angezeigt. Das ist eigentlich auch ok.
Ich bin aber auf der Suche nach der Möglichkeit, bei "mouseover" eine andere Zelleninfo nämlich den Flugplatznamen oder die -kennung anzeigen zu lassen, die sich in einer anderen Zelle befindet.
Es soll keine dauerhafte Beschriftung erfolgen, das würde zu unübersichtlich, da die Plätze tlw. dicht beieinander liegen. Ich möchte die Info nur per Mauszeiger abrufen können.
Kann mir jemand weiterhelfen?
Vielen Dank für's Lesen!
Roland

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm: bei 'mouseover' best. Zelleninfo zeigen
09.04.2009 09:26:33
ChristianM
Hallo Roland,
das geht mit VBA, kann aber bei 'mouseover' etwas heikel sein.
Das Prinzip ist hier beschrieben:
http://www.computorcompanion.com/LPMArticle.asp?ID=221
Du könntest mal eine Beispiel-Datei hochladen, dann kann ich dir bestimmt helfen.
Gruß
Christian
AW: Diagramm: bei 'mouseover' best. Zelleninfo zeigen
09.04.2009 09:28:37
Roland
Moinj Christian,
danke für den Tipp, werd mir das mal ansehen.
Ich erstelle gleich eine Bespieldatei, hab die Originaldatei nicht auf diesem PC.
Gruß
Roland
AW: Beispieldatei
09.04.2009 11:04:12
Roland
Hallo Christian,
habe mrr den link angesehen, finde, die nachstehende Funktion könnte passen, wenn sie entsprechend geändert würde. Habe mit VBA leider kaum Erfahrungen, kannst Du mir helfen?

Private Sub Chart_MouseUp(ByVal Button As Long, ByVal Shift As Long, _
ByVal x As Long, ByVal y As Long)
Dim ElementID As Long, Arg1 As Long, Arg2 As Long
Dim myX As Variant, myY As Double
With ActiveChart
' Pass x & y, return ElementID and Args
.GetChartElement x, y, ElementID, Arg1, Arg2
' Did we click over a point or data label?
If ElementID = xlSeries Or ElementID = xlDataLabel Then
If Arg2 > 0 Then
' Extract x value from array of x values
myX = WorksheetFunction.Index _
(.SeriesCollection(Arg1).XValues, Arg2)
' Extract y value from array of y values
myY = WorksheetFunction.Index _
(.SeriesCollection(Arg1).Values, Arg2)
' Display message box with point information
MsgBox "Series " & Arg1 & vbCrLf _
& """" & .SeriesCollection(Arg1).Name & """" & vbCrLf _
& "Point " & Arg2 & vbCrLf _     _
& "X = " & myX & vbCrLf _
& "Y = " & myY
End If
End If
End With


Ich würde gerne die Variable Arg2 durch den Inhalt in der entsprechenden Zelle mit der gewünschten Info verwenden.
Ist das möglich?

Anzeige
ich bin dran...
09.04.2009 11:07:54
ChristianM
...noch etwas Geduld
Christian.
AW: Beispieldatei
09.04.2009 11:53:53
ChristsianM
Hallo,
im folgenden Beispiel wird ein Shape rechts oben im Diagramm erzeugt. Beim Mousemove-Ereignis über einen Datenpunkt werden die Infos aus Tabelle1 in diesem Shape angezegt.
Aktiviert wird das ganze, wenn das Diagramm-Sheet aktiviert wird (zB beim Wechsel von einer Tabelle zu dem Diagramm). Der Code muss ins Klassenmodul von Diagramm1.
Gruß
Christian

Option Explicit
Private Const SHNAME As String = "ChartTip"
Dim shInfo As Shape
Private Sub Chart_Activate()
Dim sh As Shape
For Each sh In ActiveChart.Shapes
If sh.Name = SHNAME Then
sh.Delete
Set shInfo = Nothing
End If
Next
With ActiveChart
Set shInfo = .Shapes.AddShape(1, .ChartArea.Width - 100, .ChartArea.Top + 10, 80, 50)
shInfo.Name = SHNAME
End With
End Sub
Private Sub Chart_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y  _
_
As Long)
Dim lngElmt&, lngSer&, lngPnt&
Dim strTxt As String
Dim varX, varRow
With Sheets("Tabelle1")
ActiveChart.GetChartElement x, y, lngElmt, lngSer, lngPnt
If Not shInfo Is Nothing Then
If lngElmt  xlSeries Then shInfo.TextFrame.Characters.Text = "": Exit Sub
End If
If lngPnt > 0 Then
varX = Application.Index(ActiveChart.SeriesCollection(lngSer).XValues, lngPnt)
varRow = Application.Match(CDbl(varX), .Columns(3), 0)
strTxt = _
.Cells(varRow, 1) & vbLf & _
"ICAO: " & .Cells(varRow, 2) & vbLf & _
"N: " & .Cells(varRow, 3) & vbLf & _
"E: " & .Cells(varRow, 4)
If Not shInfo Is Nothing Then
shInfo.TextFrame.Characters.Text = strTxt
shInfo.TextFrame.Characters.Font.Size = 8
End If
End If
End With
End Sub


Anzeige
Danke!!
09.04.2009 14:55:24
Roland
Christian, genau das, was ich gesucht habe!
Vielen herzlichen Dank!!!
Wünsch Dir ein schönes Osterfest!
Gruß
Reinhard
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge