標題:
[發問]
excel列高隨電腦windows 7 設定不同而有差異
[打印本頁]
作者:
baconbacons
時間:
2014-12-25 09:00
標題:
excel列高隨電腦windows 7 設定不同而有差異
下列的巨集遇到一個問題無法解決 想請教除了手動調整windows設定外 能否以巨集方式自動處理?
因為表格(列高、欄寬均有固定規格)有複製需要 故以下列程式碼處理
但此程式碼在本人電腦運作正常 在他人電腦會發生表格跑掉情形
經過確認原始表格的列高數值(右鍵確認列高)是固定的 但問題出在於windows 7設定
控制台>外觀及個人化>讓螢幕上的內容更容易閱讀
我的設定是100%,他人的設定是125%
導致我的表格在預覽時都正常 但他人的電腦在預覽第三頁之後就開始跑掉(第4頁的資料跑到第3頁…等)
請教該如何處理?
If myPhoto <> "" Then
j = 25
Set Rng = Rows("1:24")
Rng.Copy
For i = 1 To (countPhoto - 1)
With ActiveSheet.Cells(j, 1)
.PasteSpecial Paste:=xlPasteAll
' .PasteSpecial Paste:=xlPasteFormats
End With
j = j + 24
Next i
Application.CutCopyMode = False
複製代碼
作者:
luhpro
時間:
2014-12-26 00:16
本帖最後由 luhpro 於 2014-12-26 00:17 編輯
下列的巨集遇到一個問題無法解決 想請教除了手動調整windows設定外 能否以巨集方式自動處理?
因為表格(列 ...
baconbacons 發表於 2014-12-25 09:00
用 Excel VBA 抓登錄檔資料的方式我還不是很熟,
這裡只能先提供 Windows 7 相關登錄資料檔訊息:
[HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics]
"AppliedDPI"=dword:00000060
如上例此值 = Hex 60 , 即 10 進位值 = 96 (其意 為 96 DPI -> 此時螢幕解析度的 DPI 標準值, 即此為 100% 時的 DPI 數) (Hex 為 16 進位值, DPI : 每英吋像點數)
[HKEY_CURRENT_USER\Control Panel\Desktop]
"LogPixels"=dword:00000060
依上例標準 DPI 數做計算,
當此值 = Hex 60 時, 10進位值 = 96 (其意 為 96 DPI, = 100%)
當此值 = Hex 78 時, 10進位值 = 120 (其意 為 120 DPI, = 125%)
程式碼就請大家幫忙補囉.
作者:
baconbacons
時間:
2014-12-26 19:28
回復
2#
luhpro
感謝luhpro大的提醒
也找了論壇文章只有看到Hsieh大的文章提到螢幕解析度的取得
Hsieh大:取得系統資訊/使用者資訊
只是LogPixels好像和解析度又不完全一樣,網路上資料說叫邏輯圖素,它的基本意思是「以每英寸的圖素數為單位的非實際解析度」
雖然還不知道怎麼解決 但也是學了一課先 靜待其他前輩提供意見 感謝
作者:
stillfish00
時間:
2014-12-27 10:16
回復
1#
baconbacons
可以試試用放大縮小,使某範圍顯示在一整頁
EX: 假設1~24行為一頁
Sub AutoZoom()
ActiveSheet.Range("1:24").Select
ActiveWindow.Zoom = True
End Sub
複製代碼
作者:
baconbacons
時間:
2014-12-29 11:41
回復
4#
stillfish00
stillfish00大:
我直接將ActiveWindow.Zoom的值設定為100 但問題還是沒解決 我想縮放比例和LogPixels好像是意思不同
ActiveWindow.Zoom = 100
煩請stillfish00大再指教
作者:
GBKEE
時間:
2014-12-29 13:34
回復
5#
baconbacons
試試看
ThisWorkbook 模組的活頁簿事件
Option Explicit
Const My_Width = 9.11 '指定欄的寬度
Const My_Height = 20.4 '指定列的高度
Private Sub Workbook_Open()
儲存格的調整 ActiveSheet
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
儲存格的調整 Sh
End Sub
Private Sub 儲存格的調整(Sh As Worksheet)
With Sh.Cells
.ColumnWidth = My_Width
.RowHeight = My_Height
End With
End Sub
複製代碼
作者:
baconbacons
時間:
2014-12-29 14:27
回復
6#
GBKEE
GBKEE大:
問一個笨問題,是要把這三個Private Sub都貼在ThisWorkbook的模組再執行嗎?
還是貼在原本自己的程式碼中?因為我的儲存格並非每一列高、每一欄寬都固定大小
而是將24列合併儲存格後,以此合併儲存格為樣板去複製,所以才會有下列程式碼的作法
Set Rng = Rows("1:24")
Rng.Copy
作者:
GBKEE
時間:
2014-12-29 15:05
回復
7#
baconbacons
ThisWorkbook的
Private Sub Workbook_Open()
在檔案開啟時自動執行的程式.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
在活頁簿中選擇作用中工作表時自動執行的程式.
你的情況可能須在這程式中一一指定個別儲存格的欄寬,列高
作者:
stillfish00
時間:
2014-12-29 15:37
回復
5#
baconbacons
沒有要你設定為100啊,是要你在copy完執行一次 4# 的 AutoZoom,讓他去自動調整
作者:
baconbacons
時間:
2014-12-29 16:45
回復
9#
stillfish00
stillfish00大:
嘗試你的建議程式碼 還是會超出該頁面 我想可能不是縮放比例的關係
因為我的工作表列高值和別人電腦的列高值 完全一樣
我電腦的登錄檔設定值 = Hex 60 時, 10進位值 = 96 (其意 為 96 DPI, = 100%)
別人電腦登錄檔設定值 = Hex 78 時, 10進位值 = 120 (其意 為 120 DPI, = 125%)
結果就是我印出來都正常 別人印出來就開始出現錯位情形
感謝stillfish00大
作者:
baconbacons
時間:
2014-12-30 09:18
回復
6#
GBKEE
GBKEE大:
經過嘗試 雖然可以固定列高 但這方法在改變螢幕比例(不是縮放比例)後仍會發生相同的問題
再麻煩 GBKEE大
作者:
baconbacons
時間:
2015-1-5 14:07
回復
8#
GBKEE
GBKEE大:
試過提供的方法 還是無法解決跳頁的問題 再拜託GBKEE大了…
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)