Board logo

標題: [發問] 格式化條件,有值則顯示整數列框架 [打印本頁]

作者: jackson7015    時間: 2012-3-28 16:45     標題: 格式化條件,有值則顯示整數列框架

想請問各位前輩

如何設定格式化條件,讓其工作頁框架在有值的時候,會在編號1到10作為一整數的的情況下自動框架邊線
若是超過編號10的部分,則是1到20,以此類推

目前只會設定公式條件=C1>0
但是只有有數值的部分有框架,不會設定出編號1到10的部分都出現框架
[attach]10186[/attach]
檔案中需要的項目1是我所需要的成品
作者: ANGELA    時間: 2012-3-28 17:07

=LEN(C2)>0
作者: jackson7015    時間: 2012-3-29 16:15

回復 2# ANGELA

感謝ANGELA大的回覆
目前就是使用此公式,但是需要的格式是編號1~10都會出現設定的格式
若是編號11有值則會在1~20皆有格式,以此類推..

不曉得公式該如何寫
作者: register313    時間: 2012-3-29 16:47

本帖最後由 register313 於 2012-3-29 16:54 編輯

回復 3# jackson7015

選C欄~I欄
設定格式化條件
公式為  =(ROW()-2)<=ROUNDUP(COUNTA($C$3:$C$65536),-1)
作者: jackson7015    時間: 2012-3-29 22:44

本帖最後由 jackson7015 於 2012-3-29 23:52 編輯

回復 4# register313

感謝大大的回應,可以正常執行了

公式再慢慢研究,謝謝!!
作者: jackson7015    時間: 2012-4-2 16:39

回復 4# register313

想請問register313大大

為何設定好格式後,工作頁面也有正常顯示空白的框架欄位
可是列印顯示,卻沒有空白框架
列印出來的文件也沒有空白框架

但是有字元的框架部分卻有顯示,也能列印出來
作者: register313    時間: 2012-4-2 16:54

回復 6# jackson7015

依你的敘述,這真是個奇怪的現象
用格式化條件設定框線 等同於 手動畫框線 ,唯一差別是 自動 與 手動

是否上傳你設定好的檔案,讓大家查看問題出在那
作者: jackson7015    時間: 2012-4-3 16:47

回復 7# register313

發現很奇怪的現象
我下載第一回應的表格去測試,可以正常列印出無字元框架
而使用我的資料檔案,卻不能列印出無字元框架

附上一部份資料檔案工作頁面,項目1
[attach]10283[/attach]
作者: register313    時間: 2012-4-3 16:56

回復 8# jackson7015

項目1工作表 所設定之列印範圍只到第10列 , 所以第11列後雖有框線亦不列印

檢視/分頁預覽 即可得知列印之分頁情形
作者: jackson7015    時間: 2012-4-5 08:18

本帖最後由 jackson7015 於 2012-4-5 08:20 編輯

回復 9# register313

想在冒昧請問一下
為什麼直接選擇E:I欄位,卻不能將所有空白框架也都包含在列印範圍內?

而手動繪製的空白框架,卻可以自動包含在列印範圍內?

該怎麼設定才能讓自動格式化條件的框架,自動包含在列印範圍內呢?
如果無法以設定做處理的話,巨集該如何編寫?
作者: register313    時間: 2012-4-5 11:12

本帖最後由 register313 於 2012-4-5 11:24 編輯

回復 10# jackson7015

1.檢視/分頁預覽  手動調整列印範圍

2.VBA
功能:當C欄列號個位數為3之儲存格值有變動時且該儲存格不為空值=>自動加10列框線
         當C欄列號個位數為3之儲存格值有變動時且該儲存格為空值=>自動取消10列框線
工作表模組
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If (Target.Column = 3) And (Target.Row Mod 10) = 3 Then
  3.    If Target <> "" Then
  4.       Target.Resize(10, 7).Borders.LineStyle = xlContinuous
  5.    Else
  6.       Target.Resize(10, 7).Borders.LineStyle = xlNone
  7.    End If
  8. End If
  9. End Sub
複製代碼

作者: jackson7015    時間: 2012-4-5 16:22

回復 11# register313

感謝register313大大的回應

想請教此種Private Sub巨集直接開新巨集下去使用就好了嗎?
還是要插入到列印巨集內?

我使用新巨集下去使用時,會連結導入其他巨集
而我導入到新建的列印巨集中,好像沒有變更列印範圍
作者: register313    時間: 2012-4-5 16:44

回復 12# jackson7015
看看符不符你的需求
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If (Target.Column = 3) And (Target.Row Mod 10) = 3 Then
  3.    If Target <> "" Then
  4.       Target.Resize(10, 7).Borders.LineStyle = xlContinuous
  5.       PageSetup.PrintArea = "C1:I" & Target.Row + 9
  6.    Else
  7.       Target.Resize(10, 7).Borders.LineStyle = xlNone
  8.       PageSetup.PrintArea = "C1:I" & Target.Row - 1
  9.    End If
  10. End If
  11. End Sub
複製代碼
[attach]10310[/attach]
[attach]10311[/attach]
作者: jackson7015    時間: 2012-4-6 09:15

回復 13# register313

感謝register313大大的幫忙

若是C欄列號個位數為6的話,是否更改為下式
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If (Target.Column = 6) And (Target.Row Mod 10) = 6 Then
  3.    If Target <> "" Then
  4.       Target.Resize(10, 4).Borders.LineStyle = xlContinuous
  5.       PageSetup.PrintArea = "C1:I" & Target.Row + 9
  6.    Else
  7.       Target.Resize(10, 4).Borders.LineStyle = xlNone
  8.       PageSetup.PrintArea = "C1:I" & Target.Row - 1
  9.    End If
  10. End If
  11. End Sub
複製代碼
但是更改後好像是錯誤的,反而沒有動作..

可能要再麻煩register313大大協助一下
作者: register313    時間: 2012-4-6 09:42

回復 14# jackson7015


If (Target.Column = 3) And (Target.Row Mod 10) = 6 Then
     欄號為3                                    列號/10後餘數為6
作者: jackson7015    時間: 2012-4-6 16:15

回復 15# register313

已經可以正常變更列印範圍了,感謝register313大大

想請教,我是將工作頁面以樞紐分析表作整理

在手動測試大大提供的測試碼時發現,若是將C欄資料一次刪除或者一次變更至多頁
好像無法判斷c欄變動的範圍,只會依照重新整理前的列印範圍表示
作者: register313    時間: 2012-4-6 16:27

回復 16# jackson7015

11# 之說明
功能:當C欄列號個位數為3之儲存格值有變動時且該儲存格不為空值=>自動加10列框線
     當C欄列號個位數為3之儲存格值有變動時且該儲存格為空值=>自動取消10列框線
13# 之動畫說明
=>目前提供之方法,適合C欄儲存格逐格往下輸入之操作方式

若是C欄資料已事先建立好,要一次判斷全部之框線,則程式要作修改(若要修改請附檔案)
作者: vvcvc    時間: 2012-4-7 11:38

路過額外問一個問題
格式化條件在什麼情況下會被破壞掉?
因為製作的檔案放在公開使用區裡常有格式消失的狀況
使用者非常多,實在抓不出誰弄壞
一直找不到格式被破壞是做了什麼操作
作者: Hsieh    時間: 2012-4-7 11:57

回復 18# vvcvc

任何儲存格、欄、列的複製、插入或刪除都可能影響格式化條件
作者: jackson7015    時間: 2012-4-9 08:47

本帖最後由 jackson7015 於 2012-4-9 08:50 編輯

回復 17# register313

功能需求:
當C欄列號個位數為6之儲存格值有變動時且該儲存格不為空值=>自動加10列框線
當C欄列號個位數為6之儲存格值有變動時且該儲存格為空值=>自動取消10列框線
當E6之儲存格值有變動時且該儲存格為空值=>自動取消列印範圍(無列印)
且當C欄列號個位數為6之儲存格值有變動時=>隨時判斷列印範圍
[attach]10357[/attach]

麻煩大大了,由衷感謝..
作者: register313    時間: 2012-4-9 14:37

回復 20# jackson7015

1.選C欄~I欄
    設定格式化條件
    公式為  =(ROW()-5)<=ROUNDUP(COUNTA($C$3:$C$65536),-1)

2.Thisworkbook 活頁簿模組
  1. Private Sub Workbook_BeforePrint(Cancel As Boolean)
  2. If [C6] = "" Then
  3.    LR = 5
  4. Else
  5.    LR = Application.CountA([C6:C65535])
  6.    LR = Application.RoundUp(LR, -1) + 5
  7. End If
  8. ActiveSheet.PageSetup.PrintArea = "C1:I" & LR
  9. End Sub
複製代碼

作者: jackson7015    時間: 2012-4-9 16:22

回復 21# register313

感謝register313大大不辭辛勞的幫忙...

格式化條件我更改為下列公式可正常繪製格線
=(ROW()-5)<=ROUNDUP(COUNTA($C$6:$C$65535),-1)

Thisworkbook 活頁簿模組我輸入後,列印格式沒有反應也沒有改變

請問是否還要更改哪些部份呢?
作者: register313    時間: 2012-4-9 16:46

回復 22# jackson7015

Private Sub Workbook_BeforePrint(Cancel As Boolean)
此為列印前去設定列印範圍

預覽列印 或 列印 即會生效
作者: jackson7015    時間: 2012-4-9 17:05

回復 23# register313

使用預覽列印和直接列印後,只出現一頁的列印範圍,沒有變更列印範圍

附上表格,在煩請register313大大幫忙...
[attach]10363[/attach]
作者: register313    時間: 2012-4-9 17:12

回復 24# jackson7015

程式碼加在ThisWorkbook內
[attach]10367[/attach]

其他工作表內的程式刪除
作者: jackson7015    時間: 2012-4-10 08:31

本帖最後由 jackson7015 於 2012-4-10 08:43 編輯

回復 25# register313

請問register313大大,工作模組的各項屬性是否要更動?

我將公式輸入Thisworkbook 後依然是沒有反應

原本以為是否是之前設定了C:I的列印範圍的影響
所以取消全部列印範圍後,列印範圍變為200頁!?
而重新手動設定了C:I列印範圍後,變回有字元部分才有列印範圍

項目一是手動輸入C欄數值測試,列印範圍手動輸入了C:I=>有字元部分才有列印範圍
項目四是重新整理樞紐分析表測試,列印範圍手動輸入C:I=>有字元部分才有列印範圍
項目六是取消所有列印範圍=>列印張數變為200頁..
項目11是C欄無數值,取消所有列印範圍=>列印張數為200頁

附上檔案煩請大大
看看是否有小弟手拙設定錯誤的地方
[attach]10376[/attach]
作者: register313    時間: 2012-4-10 10:14

回復 26# jackson7015

1.不用手動去設定列印範圍
2.工作表改好後,
   作 預覽列印列印,其列印範圍會自動調整設定
作者: jackson7015    時間: 2012-4-11 08:27

回復 27# register313

動作測試出來後:
1.清除手動設定列印範圍
2.Thisworkbook 修改後
    預覽列印是為27#樓所回覆的列印範圍
    直接列印出來的範圍則是大大所表示的範圍,且列印後會變更為所需要之範圍,即是本人所需的列印範圍動作
感謝register313熱心幫忙,終於解決所有問題點

將程式碼使用在我的完整工作報表內後,其他的工作頁面會自動將已設定的列印範圍,更改為Thisworkbook 程式碼的列印範圍
請問可以只在項目1∼項目11的這些工作頁面做列印範圍動作就好了嗎?
這樣才不會影響到其他工作頁面
將程式寫在項目工作表內,列印出來的範圍不會有變更
作者: register313    時間: 2012-4-11 08:52

回復 28# jackson7015

功能:"項目1" 或 "項目4" 或 "項目6" 或 "項目11"  4張工作表在作預覽列印或直接列印時,會自動設定調整成所需之列印範圍
ThisWorkbook程式碼改為下列即可
  1. Private Sub Workbook_BeforePrint(Cancel As Boolean)
  2. Sh = ActiveSheet.Name
  3. If Sh = "項目1" Or Sh = "項目4" Or Sh = "項目6" Or Sh = "項目11" Then
  4.   If [C6] = "" Then
  5.      LR = 5
  6.   Else
  7.      LR = Application.CountA([C6:C65535])
  8.      LR = Application.RoundUp(LR, -1) + 5
  9.   End If
  10.   ActiveSheet.PageSetup.PrintArea = "C1:I" & LR
  11. End If
  12. End Sub
複製代碼

作者: jackson7015    時間: 2012-4-11 09:07

回復 29# register313

程式碼列印範圍已能完全正常使用
所寫內容也會慢慢去解析
再次萬分感謝register313大大重頭到尾的協助幫忙
小弟感激不盡




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)