標題:
[發問]
格式化條件,有值則顯示整數列框架
[打印本頁]
作者:
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列框線
工作表模組
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 3) And (Target.Row Mod 10) = 3 Then
If Target <> "" Then
Target.Resize(10, 7).Borders.LineStyle = xlContinuous
Else
Target.Resize(10, 7).Borders.LineStyle = xlNone
End If
End If
End Sub
複製代碼
作者:
jackson7015
時間:
2012-4-5 16:22
回復
11#
register313
感謝register313大大的回應
想請教此種Private Sub巨集直接開新巨集下去使用就好了嗎?
還是要插入到列印巨集內?
我使用新巨集下去使用時,會連結導入其他巨集
而我導入到新建的列印巨集中,好像沒有變更列印範圍
作者:
register313
時間:
2012-4-5 16:44
回復
12#
jackson7015
看看符不符你的需求
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 3) And (Target.Row Mod 10) = 3 Then
If Target <> "" Then
Target.Resize(10, 7).Borders.LineStyle = xlContinuous
PageSetup.PrintArea = "C1:I" & Target.Row + 9
Else
Target.Resize(10, 7).Borders.LineStyle = xlNone
PageSetup.PrintArea = "C1:I" & Target.Row - 1
End If
End If
End Sub
複製代碼
[attach]10310[/attach]
[attach]10311[/attach]
作者:
jackson7015
時間:
2012-4-6 09:15
回復
13#
register313
感謝register313大大的幫忙
若是C欄列號個位數為6的話,是否更改為下式
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 6) And (Target.Row Mod 10) = 6 Then
If Target <> "" Then
Target.Resize(10, 4).Borders.LineStyle = xlContinuous
PageSetup.PrintArea = "C1:I" & Target.Row + 9
Else
Target.Resize(10, 4).Borders.LineStyle = xlNone
PageSetup.PrintArea = "C1:I" & Target.Row - 1
End If
End If
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 活頁簿模組
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If [C6] = "" Then
LR = 5
Else
LR = Application.CountA([C6:C65535])
LR = Application.RoundUp(LR, -1) + 5
End If
ActiveSheet.PageSetup.PrintArea = "C1:I" & LR
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程式碼改為下列即可
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Sh = ActiveSheet.Name
If Sh = "項目1" Or Sh = "項目4" Or Sh = "項目6" Or Sh = "項目11" Then
If [C6] = "" Then
LR = 5
Else
LR = Application.CountA([C6:C65535])
LR = Application.RoundUp(LR, -1) + 5
End If
ActiveSheet.PageSetup.PrintArea = "C1:I" & LR
End If
End Sub
複製代碼
作者:
jackson7015
時間:
2012-4-11 09:07
回復
29#
register313
程式碼列印範圍已能完全正常使用
所寫內容也會慢慢去解析
再次萬分感謝register313大大重頭到尾的協助幫忙
小弟感激不盡
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)