Board logo

標題: [發問] 儲存格著色問題 [打印本頁]

作者: PJChen    時間: 2022-12-25 15:15     標題: 儲存格著色問題

大大好,
連續儲存格著色,通常都不會有空隙,請問要怎麼做,才能像以下圖示般著色?
[attach]35655[/attach]
作者: Andy2483    時間: 2022-12-26 10:55

回復 1# PJChen


    謝謝前輩發表此主題
後學藉此帖學習到很多知識與經驗,以下程式碼請試試看是否符合需求

執行結果:
[attach]35657[/attach]

Option Explicit
Sub TEST_20221226_1()
Dim Area, T
T = [{"資產","流動資產:","現金","應收票據","應收帳款","存貨","預付款項","其他應收款","其他流動資產","流動資產總計"}]
T = Application.Transpose(T)
Workbooks.Add
Set Area = [D2:E15]
With Area
   .Font.Name = "微軟正黑體"
   .Font.ColorIndex = 49
   .HorizontalAlignment = xlLeft
   .VerticalAlignment = xlTop
   .Borders(xlInsideHorizontal).LineStyle = xlContinuous
   .Borders(xlInsideHorizontal).ThemeColor = 1
   .Item(1).ColumnWidth = 20
   .Item(2).ColumnWidth = 16
   .Interior.ColorIndex = 2
   .Item(5).Resize(2, 2).Interior.ColorIndex = 49
   .Item(5).Resize(2, 2).Merge
   .Item(11).Resize(8, 2).Interior.ColorIndex = 37
   .Item(1) = "公司名稱"
   .Item(1).Font.Size = 16
   .Item(3) = "2022/3/31"
   .Item(3).NumberFormatLocal = "日期:yyyy.mm.dd"
   .Item(5) = "資產負債表"
   .Item(5).Font.ColorIndex = 2
   .Item(14, 1).Resize(1, 2).Borders(xlEdgeTop).LineStyle = 1
   .Item(14, 1).Resize(1, 2).Borders(xlEdgeTop).Weight = 4
   .Item(14, 1).Resize(1, 2).Borders(xlEdgeTop).ThemeColor = 2
   .Item(14, 1).Font.Bold = True
   .Item(1).Font.Bold = True
   .Item(9).Font.Bold = True
   .Item(5, 1).Resize(10) = T
End With
End Sub
作者: PJChen    時間: 2022-12-26 19:11

回復 2# Andy2483

您好,

原來是用程式碼嗎?
我原以為是設定的問題呢!
謝謝您
作者: Emily    時間: 2022-12-27 13:00

回復 1# PJChen

這基本上可以在储存格式做到,我不用白色因看不到

[attach]35667[/attach]
作者: Andy2483    時間: 2022-12-27 13:46

本帖最後由 Andy2483 於 2022-12-27 13:52 編輯

回復 3# PJChen


    謝謝前輩回復
這些屬性都可以用錄製巨集即可取得,因後學藉此題練習VBA,並可縮短研討此主題得到答案,所以建議直接以VBA方案

淺藍底色,儲存格格式格線選項:
[attach]35668[/attach]

結果:
[attach]35669[/attach]

以下是後學練習VBA心得註解,請參考
Option Explicit
Sub TEST_20221226_1()
Dim Area, T
'↑宣告變數(Area,T)都是通用型變數
T = [{"資產","流動資產:","現金","應收票據","應收帳款","存貨","預付款項","其他應收款","其他流動資產","流動資產總計"}]
'↑令T這通用型變數是 10個字串組成的陣列,索引號從1到10
T = Application.Transpose(T)
'↑令T這通用型變數是 陣列自身轉置後的二維陣列
Workbooks.Add
'↑令程序產生一個新活頁簿
Set Area = [D2:E15]
'↑令Area這通用型變數是 新活頁簿[D2:E15]儲存格
With Area
'↑以下是關於Area變數的相關程序
   .Font.Name = "微軟正黑體"
   '↑令字體名稱是 "微軟正黑體"
   .Font.ColorIndex = 49
   '↑令字色代號是 49
   .HorizontalAlignment = xlLeft
   '↑令儲存格內容顯示靠左
   .VerticalAlignment = xlTop
   '↑令儲存格內容顯示靠上
   .Borders(xlInsideHorizontal).LineStyle = xlContinuous
   '↑令區域儲存格內部水平格線是實線
   'xlContinuous= 1 :  連續線
   .Borders(xlInsideHorizontal).ThemeColor = 1
   '↑令區域儲存格內部水平格線顏色是白色
   .Item(1).ColumnWidth = 20
   '↑令區域儲存格第1格的欄寬是 20
   .Item(2).ColumnWidth = 16
   '↑令區域儲存格第2格的欄寬是 16
   .Interior.ColorIndex = 2
   '↑令區域儲存格底色是 白色
   .Item(5).Resize(2, 2).Interior.ColorIndex = 49
   '↑令區域儲存格第5格(含自身)擴展向下2列向右2欄區域儲存格,底色是藍色
   .Item(5).Resize(2, 2).Merge
   '↑令區域儲存格第5格(含自身)擴展向下2列向右2欄區域儲存格合併
   .Item(11).Resize(8, 2).Interior.ColorIndex = 37
   '↑令區域儲存格第11格(含自身)擴展向下8列向右2欄區域儲存格,底色是淺藍色
   .Item(1) = "公司名稱"
   '↑令區域儲存格第1格值是 "公司名稱"字串
   .Item(1).Font.Size = 16
   '↑令區域儲存格第1格字大小是 16
   .Item(3) = "2022/3/31"
   '↑令區域儲存格第3格值是 "2022/3/31"字串
   .Item(3).NumberFormatLocal = "日期:yyyy.mm.dd"
   '↑令區域儲存格第3格格式是 "日期:yyyy.mm.dd"
   .Item(5) = "資產負債表"
   '↑令區域儲存格第5格值是 "資產負債表"字串
   .Item(5).Font.ColorIndex = 2
   '↑令區域儲存格第5格字色是 白色
   .Item(14, 1).Resize(1, 2).Borders(xlEdgeTop).Weight = 4
   '↑令區域儲存格 14列1欄儲存格擴展向下1列向右2欄區域儲存格,其上方格線重量係數是4
   .Item(14, 1).Resize(1, 2).Borders(xlEdgeTop).ThemeColor = 2
   '↑令區域儲存格 14列1欄儲存格擴展向下1列向右2欄區域儲存格顏色是 黑色
   .Item(14, 1).Font.Bold = True
   '↑令區域儲存格 14列1欄儲存格字是粗體
   .Item(1).Font.Bold = True
   '↑令區域儲存格第1格字是粗體
   .Item(9).Font.Bold = True
   '↑令區域儲存格第9格字是粗體
   .Item(5, 1).Resize(10, 1) = T
   '↑令區域儲存格 5列1欄儲存格擴展向下10列向右1欄區域儲存格值,以T陣列帶入
End With
End Sub



Sub 陣列語法測試()
Dim V, T, S, Z
V = Array("資產", "流動資產:", "現金", "應收票據", "應收帳款", "存貨", "預付款項", "其他應收款", "其他流動資產", "流動資產總計")
T = [{"資產","流動資產:","現金","應收票據","應收帳款","存貨","預付款項","其他應收款","其他流動資產","流動資產總計"}]
S = Split("資產,流動資產:,現金,應收票據,應收帳款,存貨,預付款項,其他應收款,其他流動資產,流動資產總計", ",")
Z = Application.Transpose(T)
'↑令T這通用型變數是 陣列自身轉置後的二維陣列
MsgBox Z(2, 1)
MsgBox V(2) & "   " & T(2) & "   " & S(2)
MsgBox V(1) & "   " & T(1) & "   " & S(1)
MsgBox V(0) & "   " & T(0) & "   " & S(0)
End Sub

偵錯:
[attach]35671[/attach]
作者: PJChen    時間: 2022-12-28 22:28

回復 5# Andy2483
真感謝,你好貼心~~
作者: PJChen    時間: 2022-12-28 22:29

回復 4# Emily
原來這樣就可以簡單達成,感謝~~




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