Chcę móc utworzyć wykres, którego lewy górny róg znajduje się na mojej pozycji kursora. Czy to jest możliwe? Czy mysz (X, Y) myszy może zostać przekonwertowana na format zasięgu?Jak uzyskać współrzędną (X, Y) kursora na arkuszu?
6
A
Odpowiedz
4
Not sure about the mouse x y, ale można uzyskać zakres zmiany wyboru arkusza roboczego. Umieść wykres w tej lokalizacji.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Chart.Left = Target.column
Chant.Top = Target.row
End Sub
10
Hm, to nie jest dokładnie zbudowany w AFAIK, ale znalazłem this page co daje sugestię, że pracował dla mnie:
w module, umieścić to na górze:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, _
lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Następnie dla podprogramy uzyskać mouseX i mouseY, umieścić to gdzieś poniżej:
Function MouseX(Optional ByVal hWnd As Long) As Long
' Get mouse X coordinates in pixels
'
' If a window handle is passed, the result is relative to the client area
' of that window, otherwise the result is relative to the screen
Dim lpPoint As POINTAPI
Application.Volatile(false)
GetCursorPos lpPoint
If hWnd Then ScreenToClient hWnd, lpPoint
MouseX = lpPoint.X
End Function
i
Function MouseY(Optional ByVal hWnd As Long) As Long
' Get mouse Y coordinates in pixels
'
' If a window handle is passed, the result is relative to the client area
' of that window, otherwise the result is relative to the screen
Dim lpPoint As POINTAPI
Application.Volatile(false)
GetCursorPos lpPoint
If hWnd Then ScreenToClient hWnd, lpPoint
MouseY = lpPoint.Y
End Function
Następnie, w Excelu, jeśli po prostu wprowadzisz komórkę =mouseX()
, zwróci ona pozycję mouseX po trafieniu ENTER
. To samo z =mouseY()
.
próbuje ją, zrobiłam:
Sub chart_Test()
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveSheet.Shapes("Chart 1").Top = MouseY()
ActiveSheet.Shapes("Chart 1").Left = MouseX()
End Sub
i dostał go do pracy.
edytuj: Uwaga, nie jestem tak dobry z wykresami jak inne rzeczy w VBA, więc podczas tworzenia wykresów musisz edytować część .Shapes("Chart 1").
z dowolną nazwą/numerem wykresu, na którym się znajdujesz. Lub iteruj przez nie.
Powiązane problemy
- 1. Dziwactwo rubowe: x == y && [x, y] .uniq == [x, y]
- 2. x, y = getPos() vs. (x, y) = getPos()
- 3. Jak zrobić pętlę nieskończoną z "x <= y && x > = y && x! = Y"?
- 4. Jak uzyskać aktualną pozycję kursora ekranowego?
- 5. Jak uzyskać kolor piksela w X, Y przy użyciu C#?
- 6. Jak mogę uzyskać pozycję X, Y sterownika TWinControl (względem ekranu)?
- 7. Jak uzyskać pozycję X i Y przycisku UI iPhone
- 8. Kombinacje trzech liczb dodatnich x, y, z tak, że x + y, x-y, y + z, y-z, x + z i x-z są idealnymi kwadratami
- 9. Jak mogę uzyskać centrum X, Y mojego widoku w Androidzie?
- 10. Jak uzyskać pozycje X i Y elementu w dyrektywie AngularJS
- 11. jak mapować punkty siatki 2d (x, y) na kuli jako punkty 3d (x, y, z)
- 12. Kiedy używać std :: hypot `(x, y)` `nad std :: sqrt (x * x + y * y)`
- 13. (x: y) operator Julia
- 14. JavaFX 2.x: Przetłumacz współrzędną kliknięcia myszy na wartość osi XYChart
- 15. Dlaczego argumenty atan2 Y, X zamiast X, Y?
- 16. Punkt na linii najbliżej x, y
- 17. Jak znaleźć położenie kursora (X/Y, nie linia/kolumna) w obszarze tekstowym HTML?
- 18. Użycie directlabeli na wykresie x, y-scatter
- 19. Umieść komponenty na dowolnych współrzędnych (x, y).
- 20. uzyskać pozycję kursora terminalowego
- 21. Nie można rzucić klasy "X" na klasę "Y", mimo że X wydłuża Y?
- 22. Czy można uzyskać współrzędne X i Y dotyku?
- 23. Jak uzyskać najbardziej szczegółowe X, aby y wystąpienie X było prawdziwe?
- 24. Dlaczego javac nie akceptuje `x = x +++++ y`?
- 25. Jak porównać x i y w F #?
- 26. dla x w y(): jak to działa?
- 27. Jak wyrównać oś X na Y = 0 w R?
- 28. Jak umieścić obiekt w określonej lokalizacji (x, y) na JFrame?
- 29. Jak przenieść (przetłumaczyć) obraz przez przesunięcie X, Y na imagemagick?
- 30. jak zaimplementować pow (podwójne x, podwójne y)?
Chociaż nie jest to tym, o co prosił mnie OP, myślę, że to byłby dla ciebie lepszy zakład. MyszX/mouseY może działać, ale jeśli możesz to zrobić, zdefiniowałbym położenie wykresu według lokalizacji komórki, zamiast myszyX/mouseY, ponieważ twoja mysz musi być dokładnie tam, gdzie chcesz, po uruchomieniu makra (w kod wysłałem tak czy inaczej). Przyjemne myślenie @matthewD – BruceWayne
Pamiętaj, że korzystanie z funkcji biblioteki systemu Windows sprawia, że twój kod jest bezużyteczny, jeśli musi działać na Excelu dla Mac. Czyste rozwiązanie VBA prawdopodobnie będzie obsługiwane na obu platformach. – Lumigraphics