Hab noch ein problem.
ich ben�tige den Umrechnungsfaktor, von der spaltenbreite auf Pixel, bzw.
kann man die pixelangane irgendwie Auslesen?
mfg Manfred
MsgBox SpaltenbreiteInPixel(Range("A:A"))
Peter
Private Declare Function GetDC Lib "user32" ( _
ByVal hwnd As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" ( _
ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib "user32" ( _
ByVal hwnd As Long, ByVal hdc As Long) As Long
Function SpaltenbreiteInPixel(r As Range) As Integer
Dim faktorX As Double
Dim faktorY As Double
Dim dc As Long
dc = GetDC(0)
faktorX = GetDeviceCaps(dc, 88) / 72
faktorY = GetDeviceCaps(dc, 90) / 72
ReleaseDC 0, dc
SpaltenbreiteInPixel = _
CInt((ActiveWindow.PointsToScreenPixelsX(r.Width) _
- ActiveWindow.PointsToScreenPixelsX(0)) * faktorX)
End Function
mfg Manfred
"Peter Schleif" <peter....@gmx.de> schrieb im Newsbeitrag
news:hp1ium$auj$1...@news.eternal-september.org...
> Manfred Fritz schrieb am 01.Apr.2010 09:20 Uhr:
>>
>> ich ben�tige den Umrechnungsfaktor, von der spaltenbreite auf Pixel, bzw.
"Manfred Fritz" <manfre...@magwien.gv.at> schrieb im Newsbeitrag
news:12701109...@proxy.dienste.wien.at...
> 2. Frage
> kann man eine zahl in Width zurückgeben:
> r.Width =breite ??????
Setze mal den Cursor im VBA-Editor auf das Wort Width und drück F1.
Da steht erläutert, wann Schreib-Lesezugriff besteht und wann nur Lesezugriff.
Gruß
Bernhard Sander
Die Breite stellst Du mit r.ColumnWidth = ?????? ein
Peter
will nämlich wenn man pixel eingibt sich die spaltenbreite ändert
"Peter Schleif" <peter....@gmx.de> schrieb im Newsbeitrag
news:hp228l$69j$1...@news.eternal-september.org...
.ColumnWidth hat wieder einen anderen Umrechnungs-Faktor als .Width
Die wird in Characters gemessen. Frag' mich bitte nicht warum. :-)
Hatte ohnehin eine unnötig komplizierte Funktion gepostet, die Teil
eines Projekts war, bei dem die absolute Bildschirm-Position einer Zelle
berechnen werden musste. Das ist etwas aufwendiger als nur die Breite
und ich habe den komplizierteren Original-Code nicht ausreichend
bereinigt. Ich bitte dies zu entschuldigen.
Hier die Funktionen zum Umrechnen und eine Hilfsfunktion für die
Auslösung. Die drei Declare-Function-Anweisung habe ich nicht nochmal
notiert:
- Width in Pixel
- Pixel in ColumnWidth
- Width in ColumnWidth
- Hilfsfunktion dpi
Peter
'3x Private Declare Function .... wie gehabt
Function WidthToPixel(ByVal breite As Double) As Integer
WidthToPixel = CInt(breite * dpi / 72)
End Function
Function PixelToColumnWidth(ByVal breite As Integer) As Double
PixelToColumnWidth = CDbl(breite * 13 / dpi)
End Function
Function WidthToColumnWidth(ByVal breite As Double) As Double
WidthToColumnWidth = CDbl(breite * 13 / 72)
End Function
Function dpi(Optional direction As String = "x") As Integer
Dim dc As Long
dc = GetDC(0)
dpi = IIf(direction="x",GetDeviceCaps(dc,88),GetDeviceCaps(dc,90))
ReleaseDC 0, dc
End Function
was würde ich nur ohne dich machen =)
auf das wäre ich nie gekommen.
seit 1 Jahr beschäftige ich mich mit makros (schon fast meine tägliche
arbeit) und mache immer aufwendigere und kleinere makros aber so was
übersteigt noch meinen horizont. -.-
mfg Manfred
"Peter Schleif" <peter....@gmx.de> schrieb im Newsbeitrag
news:hp28r0$k5b$1...@news.eternal-september.org...
"Manfred Fritz" <manfre...@magwien.gv.at> schrieb im Newsbeitrag
news:12701829...@proxy.dienste.wien.at...
> vielen dank Peter
>
> was w嚙緝de ich nur ohne dich machen =)
>
> auf das w嚙緝e ich nie gekommen.
> seit 1 Jahr besch嚙篆tige ich mich mit makros (schon fast meine t嚙篇liche
> arbeit) und mache immer aufwendigere und kleinere makros aber so was
> 嚙箭ersteigt noch meinen horizont. -.-
>
> mfg Manfred
>
>
> "Peter Schleif" <peter....@gmx.de> schrieb im Newsbeitrag
> news:hp28r0$k5b$1...@news.eternal-september.org...
>> Manfred Fritz schrieb am 01.Apr.2010 15:37 Uhr:
>>>
>>> von r.width auf r.ColumnWidth
>>>
>>> will n嚙練lich wenn man pixel eingibt sich die spaltenbreite 嚙緯dert
>>
>> .ColumnWidth hat wieder einen anderen Umrechnungs-Faktor als .Width
>> Die wird in Characters gemessen. Frag' mich bitte nicht warum. :-)
>>
>> Hatte ohnehin eine unn嚙緣ig komplizierte Funktion gepostet, die Teil
>> eines Projekts war, bei dem die absolute Bildschirm-Position einer Zelle
>> berechnen werden musste. Das ist etwas aufwendiger als nur die Breite
>> und ich habe den komplizierteren Original-Code nicht ausreichend
>> bereinigt. Ich bitte dies zu entschuldigen.
>>
>> Hier die Funktionen zum Umrechnen und eine Hilfsfunktion f嚙緝 die
>> Ausl嚙編ung. Die drei Declare-Function-Anweisung habe ich nicht nochmal
Bei der Höhe gibt es keinen Unterschied zwischen Height und RowHeight.
Die Umrechnung Pixel->Height ist wie bei Width. Die umgekehrte Richtung
ist einfach die Umkehrfunktion. PixelToHeight und PixelToRowHeight sind
identisch.
Function HeightToPixel(ByVal hoehe As Double) As Integer
HeightToPixel = CInt(hoehe * dpi / 72)
End Function
Function PixelToHeight(ByVal hoehe As Integer) As Double
PixelToHeight = CDbl(hoehe * 72 / dpi)
End Function
Function PixelToRowHeight(ByVal hoehe As Integer) As Double
PixelToRowHeight = CDbl(hoehe * 72 / dpi)
End Function
Peter