標題:
[發問]
儲存格著色問題
[打印本頁]
作者:
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/)