Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Werte in Zeile statt MsgBox

Betrifft: Werte in Zeile statt MsgBox von: Alex
Geschrieben am: 08.12.2015 14:48:34

Hallo zusammen,

ich stehe vor folgendem Problem.
Ich möchte aus einem Diagramm die X und Y Werte durch anklicken der Punktwolke anzeigen lassen. Das klappt auch, ich habe ein passendes Makro hierfür gefunden. Dieses ist wie folgt gestrickt:

Option Explicit
Private WithEvents mobjChart As Chart
Friend Property Set prpChart(objChart As Chart)
    Set mobjChart = objChart
End Property
Private Sub mobjChart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long,  _
ByVal y As Long)
    Dim lngElementID As Long, lngArgument1 As Long, lngArgument2 As Long
    Dim vntX_Value_Array As Variant, vntY_Value_Array As Variant
    If Button = 1 Then
        mobjChart.GetChartElement x, y, lngElementID, lngArgument1, lngArgument2
        If lngElementID = xlSeries Then
            vntX_Value_Array = mobjChart.SeriesCollection(lngArgument1).XValues
            vntY_Value_Array = mobjChart.SeriesCollection(lngArgument1).Values
            mobjChart.Deselect
            MsgBox "X= " & vntX_Value_Array(lngArgument2) & _
                " Y= " & vntY_Value_Array(lngArgument2)
                     
     End If
    End If
End Sub
Jetzt ist es so, das leuchtet mir auch ein, das er den X und Y Wert in einer MsgBox ausspuckt. Wie muss ich den Code bearbeiten um den X und Y Wert in Tabellenblatt 1 zu schreiben (Name tabelle1)und diesen dann in Zeile A1 (x) bzw A2 (y).

Darüber hinaus: Verstehe ich es richtig, dass er bei jedem neuen Klick die Werte in den Kästchen überschreiben würde?

Wäre Euch sehr dankbar, wenn mir einer helfen würde!

Beste Grüße
alex

  

Betrifft: AW: Werte in Zeile statt MsgBox von: Daniel
Geschrieben am: 08.12.2015 14:55:19

Hi
naja ersezte einfach die Programmzeile mit der Messagebox durch folgende zwei Programmzeilen:

Sheets("Tabelle1").range("A1") = vntX_Value_Array(lngArgument2)
Sheets("Tabelle1").range("A2") = vntY_Value_Array(lngArgument2)
hierbei werden die Werte immer in die selben Zellen geschrieben und somit werden die alten Werte immer überschrieben.

Gruß Daniel


  

Betrifft: AW: Werte in Zeile statt MsgBox von: Alex
Geschrieben am: 08.12.2015 14:57:27

Hallo Daniel,

könnt dich knutschen, danke für die blitzschnelle Antwort!

Vielen dank!

Gruß
alex


  

Betrifft: AW: Werte in Zeile statt MsgBox von: Sepp
Geschrieben am: 08.12.2015 14:56:55

Hallo Alex,

Private Sub mobjChart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, _
  ByVal y As Long)

Dim lngElementID As Long, lngArgument1 As Long, lngArgument2 As Long
Dim vntX_Value_Array As Variant, vntY_Value_Array As Variant
If Button = 1 Then
  mobjChart.GetChartElement x, y, lngElementID, lngArgument1, lngArgument2
  If lngElementID = xlSeries Then
    vntX_Value_Array = mobjChart.SeriesCollection(lngArgument1).XValues
    vntY_Value_Array = mobjChart.SeriesCollection(lngArgument1).Values
    mobjChart.Deselect
    With Sheets("Tabelle1")
      .Range("A1") = vntX_Value_Array(lngArgument2)
      .Range("A2") = vntY_Value_Array(lngArgument2)
    End With
    
  End If
End If
End Sub


und ja, die Werte werden überschrieben.

Gruß Sepp



  

Betrifft: AW: Werte in Zeile statt MsgBox von: Alex
Geschrieben am: 09.12.2015 08:46:27

Ich leider nochmal,

nun ist es so, dass ich einen Laufwerkfehler 1004 bekomme wenn ich die Arbeitsmappe öffne. Hab schon sämtliche mögliche Kombinationen von Namensänderungen etc gemacht und komme nicht weiter. Die Funktionalität ist komischerweise NICHT eingeschränkt.



So sieht die Oberfläche aus. Die einzelnen Befehlszeilen wie folgt:
Diagramm4 (T über xd):

Option Explicit

Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long, _
    ByVal x As Long, ByVal y As Long)
   
    Dim lngElementID As Long, lngArgument1 As Long, lngArgument2 As Long
    Dim vntX_Value_Array As Variant, vntY_Value_Array As Variant
    If Button = 1 Then
        Me.GetChartElement x, y, lngElementID, lngArgument1, lngArgument2
        If lngElementID = xlSeries Then
            vntX_Value_Array = Me.SeriesCollection(lngArgument1).XValues
            vntY_Value_Array = Me.SeriesCollection(lngArgument1).Values
            Me.Deselect
            
    With Sheets("Tabelle5")
      .Range("A1") = vntX_Value_Array(lngArgument2)
      .Range("A2") = vntY_Value_Array(lngArgument2)
    End With
                
        End If
    End If
End Sub

Diese Arbeitsmappe:
Option Explicit

Private objChart As clsChart

Private Sub Workbook_Open()
    Set objChart = New clsChart
    Set objChart.prpChart = Tabelle1.ChartObjects(1).Chart
End Sub

Der kursiv dagestellte Bereich weist den Fehler auf



Klassenmodul:
Option Explicit

Private WithEvents mobjChart As Chart


Friend Property Set prpChart(objChart As Chart)
    Set mobjChart = objChart
End Property


Private Sub mobjChart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long,  _
ByVal y As Long)
    Dim lngElementID As Long, lngArgument1 As Long, lngArgument2 As Long
    Dim vntX_Value_Array As Variant, vntY_Value_Array As Variant
    If Button = 1 Then
        mobjChart.GetChartElement x, y, lngElementID, lngArgument1, lngArgument2
        If lngElementID = xlSeries Then
            vntX_Value_Array = mobjChart.SeriesCollection(lngArgument1).XValues
            vntY_Value_Array = mobjChart.SeriesCollection(lngArgument1).Values
            mobjChart.Deselect
            
    With Sheets("Tabelle5")
      .Range("A1") = vntX_Value_Array(lngArgument2)
      .Range("A2") = vntY_Value_Array(lngArgument2)
    End With
      
      
      End If
    End If
End Sub





Darüber hinaus, ist es ebenfalls möglich, neben dem mittlerweile funktionierenden Schreiben der Daten in ein seperates Blatt, gleichzeitig auch die MsgBox anzeigen zu lassen mit den Werten?


Eine letzte Wissensfrage - tut mir leid das ich so penetrant bin - ist es möglich, 2 unterschiedliche Arbeitsmappen bzw die darin befindlichen Arbeitsblätter mit anderen Arbeitsblättern zusammenzuführen?


Vielen Dank für eure Hilfe im Vorraus!

grüße
Alex


  

Betrifft: AW: Werte in Zeile statt MsgBox von: Alex
Geschrieben am: 09.12.2015 11:51:37

Ich glaub ich hätte einen Haken machen müssen beim post, sorry für den doppelten Spam..


 

Beiträge aus den Excel-Beispielen zum Thema "Werte in Zeile statt MsgBox"