- ベストアンサー
エクセルVBAで結合セルなどの色が一部消えません
色を付けてある結合セルセルが一部消えません。下のはマクロ記録してそのまま使っているものですが、なぜ消えないのか分かりません。 ちょっとたくさんありすぎてゴチャゴチャしていて恐縮ですが、消えない部分は。 AM42:AO43,AR42:AX43,BD42:BJ43,F45:T46,V45:AJ46の部分です。 使用上のクセとかなんかあるんでしょうか? Union(Range( _ "F57:T58,V57:AJ58,AM57:AO58,AR57:AX58,BD57:BJ58,F60:T61,V60:AJ61,AM60:AO61,AR60:AX61,BD60:BJ61,AV7:BC8,AU9:BC10,D16:AC17,G18:H19,O22:P23,W24:AE25,R32:AV34,F42:T43,V42:AJ43,AM42:AO43,AR42:AX43,BD42:BJ43,F45:T46,V45:AJ46,AM45:AO46,AR45:AX46,BD45:BJ46,F48:T49" _ ), Range( _ "F51:T52,V51:AJ52,AM51:AO52,AR51:AX52,BD51:BJ52,F54:T55,V54:AJ55,AM54:AO55,AR54:AX55,BD54:BJ55" _ )).Select Range("BD60").Activate Union(Range( _ "F57:T58,V57:AJ58,AM57:AO58,AR57:AX58,BD57:BJ58,F60:T61,V60:AJ61,AM60:AO61,AR60:AX61,BD60:BJ61,G65:T66,AM65:AO66,BD65:BJ66,G69:T70,AM69:AO70,BD69:BJ70,BB76:BJ78,AI80:AM81,AV7:BC8,AU9:BC10,D16:AC17,G18:H19,O22:P23,W24:AE25,R32:AV34,F42:T43,V42:AJ43" _ ), Range( _ "AM45:AO46,AR45:AX46,BD45:BJ46,F48:T49,V48:AJ49,AM48:AO49,AR48:AX49,BD48:BJ49,F51:T52,V51:AJ52,AM51:AO52,AR51:AX52,BD51:BJ52,F54:T55,V54:AJ55,AM54:AO55,AR54:AX55,BD54:BJ55" _ )).Select Range("AI80").Activate Selection.Interior.ColorIndex = xlNone
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 単に、マクロらしく書けば、このようになるのでは? ループできるところは、ループして、全部、Union でつなげる必要はないような気がします。ただし、結合セルの具合によっては、うまくいかない可能性はあります。 Sub TestMacro1() Dim i As Long Dim j As Long Const iColor = xlNone Application.ScreenUpdating = False With ActiveSheet For i = 42 To 60 Step 3 .Cells(i, 6).Resize(2, 15).Interior.ColorIndex = iClolor .Cells(i, 22).Resize(2, 15).Interior.ColorIndex = iClolor .Cells(i, 39).Resize(2, 3).Interior.ColorIndex = iClolor .Cells(i, 44).Resize(2, 7).Interior.ColorIndex = iClolor .Cells(i, 56).Resize(2, 7).Interior.ColorIndex = iClolor Next i For j = 65 To 69 Step 4 .Cells(j, 7).Resize(2, 14).Interior.ColorIndex = iClolor .Cells(j, 39).Resize(2, 3).Interior.ColorIndex = iClolor .Cells(j, 56).Resize(2, 7).Interior.ColorIndex = iClolor Next j .Cells(16, 4).Resize(2, 26).Interior.ColorIndex = iClolor .Cells(18, 7).Resize(2, 2).Interior.ColorIndex = iClolor .Cells(24, 23).Resize(2, 9).Interior.ColorIndex = iClolor .Cells(22, 15).Resize(2, 2).Interior.ColorIndex = iClolor .Cells(32, 18).Resize(3, 31).Interior.ColorIndex = iClolor .Cells(9, 47).Resize(2).Interior.ColorIndex = iClolor .Cells(7, 48).Resize(4, 8).Interior.ColorIndex = iClolor .Cells(22, 15).Resize(2, 2).Interior.ColorIndex = iClolor .Cells(76, 54).Resize(3, 9).Interior.ColorIndex = iClolor .Cells(80, 35).Resize(2, 5).Interior.ColorIndex = iClolor End With Application.ScreenUpdating = True End Sub
その他の回答 (1)
- merlionXX
- ベストアンサー率48% (1930/4007)
提示されたコードのうち Range("BD60").Activate の前は意味がありません。 それ以降の部分にAM42:AO43,AR42:AX43,BD42:BJ43,F45:T46,V45:AJ46が含まれてないのでは? ほんとにごちゃごちゃなのでよくはわかりませんが。 Sub test01() Union(Range( _ "F57:T58,V57:AJ58,AM57:AO58,AR57:AX58,BD57:BJ58,F60:T61,V60:AJ61,AM60:AO61,AR60:AX61,BD60:BJ61,G65:T66,AM65:AO66,BD65:BJ66,G69:T70,AM69:AO70,BD69:BJ70,BB76:BJ78,AI80:AM81,AV7:BC8,AU9:BC10,D16:AC17,G18:H19,O22:P23,W24:AE25,R32:AV34,F42:T43,V42:AJ43" _ ), Range( _ "AM45:AO46,AR45:AX46,BD45:BJ46,F48:T49,V48:AJ49,AM48:AO49,AR48:AX49,BD48:BJ49,F51:T52,V51:AJ52,AM51:AO52,AR51:AX52,BD51:BJ52,F54:T55,V54:AJ55,AM54:AO55,AR54:AX55,BD54:BJ55,AM42:AO43,AR42:AX43,BD42:BJ43,F45:T46,V45:AJ46" _ )).Interior.ColorIndex = xlNone End Sub
お礼
ありがとうございました。全然気づきませんでした。ホントだっと思いました。
お礼
ありがとうございました。うまくいきました。あんなゴチャゴチャしている中で、規則性を見つけてループさせるように考えることができるなんてすごいです。私は何時間もやってましたが・・・