Thema Datum  Von Nutzer Rating
Antwort
22.12.2020 09:48:04 Firefox19
NotSolved
22.12.2020 12:34:47 Gast3443
NotSolved
22.12.2020 12:39:55 Gast92653
NotSolved
22.12.2020 13:58:38 Gast7911
NotSolved
Rot Bilder in einem Tabellenblatt zentriert im Bildschirm vergrößern
22.12.2020 14:05:32 volti
NotSolved
22.12.2020 14:17:50 volti
NotSolved
22.12.2020 15:13:20 Gast38965
Solved

Ansicht des Beitrags:
Von:
volti
Datum:
22.12.2020 14:05:32
Views:
674
Rating: Antwort:
  Ja
Thema:
Bilder in einem Tabellenblatt zentriert im Bildschirm vergrößern

Hallo FireFox,

was einfach anmutet, entpuppt sich als etwas schwierige Aufgabe....

Dein Ansinnen umzusetzen erfordert daher einiges an Code. Um die Mitte des Fensters zu ermitteln gibt es keine mir bekannte Möglichkeiten.

Eine Auszählung der Positionsmitte über die sichtbaren Zellen erweist sich als nicht so einfach, weil wo verschwinden die Zellen außerhalb des Rahmens usw..

Falls nicht noch jemand eine einfachere und/oder bessere Lösung hat, kann ich Dir die u.a. Lösung anbieten, die aber möglicherweise nicht hundertprozentig zentriert, je nach dem was, ausgeblendet ist und wie gescrollt wurde.

Probiere es einfach aus und entscheide selbst, ob es Deinen Ansprüchen genügt.

Code:
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
Private Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As LongByVal y As LongAs Long
Private Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hwnd As LongPtr, lpRect As RECTAs Long

Private Type RECT
        Left   As Long
        Top    As Long
        Right  As Long
        Bottom As Long
   End Type

Sub GrossKlein()
  Dim vArr As Variant, Pty As Long, Ptx As Long
  Dim R As RECT, AC As Object, yM As Long, xM As Long, yPos As Double, XPos As Double
  Dim iZL As Long, iSP As Long
  
  Const f As Single = 1.6        ' Vergößerungsfaktor
  
  With ActiveSheet.Shapes(Application.Caller)
    
     Set AC = ActiveWindow.ActivePane
     If .AlternativeText = "" Then
        .AlternativeText = .Left & ";" & .Top & ";" & .WIDTH & ";" & .HEIGHT
        .ScaleWidth f, msoFalse
        .ScaleHeight f, msoFalse
        .ZOrder msoBringToFront
        
        GetWindowRect Application.hwnd, R
' Mitte des Excelfenster
        xM = R.Left + (R.Right - R.Left) \ 2
        yM = (R.Top + (R.Bottom - R.Top) \ 2) + CommandBars("Ribbon").Controls(1).HEIGHT - 82

        For iZL = 1 To 1000
           If AC.PointsToScreenPixelsY(Cells(iZL, "A").Top) > yM Then Exit For
        Next
        For iSP = 1 To 1000
           If AC.PointsToScreenPixelsX(Cells(1, iSP).Left) > xM Then Exit For
        Next
        With Cells(iZL - 1, iSP - 1)
           yPos = .Top + ((.Offset(10).Top - .Top) \ 2)
           XPos = .Left + ((.Offset(01).Left - .Left) \ 2)
        End With
        .Left = XPos - (.WIDTH \ 2)
        .Top = yPos - (.HEIGHT \ 2)
     Else
        vArr = Split(.AlternativeText, ";")
        .Left = vArr(0):  .Top = vArr(1)
        .WIDTH = vArr(2): .HEIGHT = vArr(3)
        .AlternativeText = ""
     End If
     Ptx = AC.PointsToScreenPixelsX(.Left + (.WIDTH \ 2))
     Pty = AC.PointsToScreenPixelsY(.Top + (.HEIGHT \ 2))
     SetCursorPos Ptx, Pty
  End With
End Sub
 
_________
viele Grüße
Karl-Heinz

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
22.12.2020 09:48:04 Firefox19
NotSolved
22.12.2020 12:34:47 Gast3443
NotSolved
22.12.2020 12:39:55 Gast92653
NotSolved
22.12.2020 13:58:38 Gast7911
NotSolved
Rot Bilder in einem Tabellenblatt zentriert im Bildschirm vergrößern
22.12.2020 14:05:32 volti
NotSolved
22.12.2020 14:17:50 volti
NotSolved
22.12.2020 15:13:20 Gast38965
Solved