
VBAは初心者なのですがお力を貸していただきたく・・・
以前こちらで質問してカレンダーを作成しました。
https://oshiete.goo.ne.jp/qa/8978761.html
その際条件付き書式で休日欄を塗りつぶすよう設定したのですが、週によって行数を変えようとしたところ、条件と合わなくなりうまく塗りつぶせません。
最終的には値貼り付けで関数も取り除くので、条件書式で付けた色を一般書式に書き換え、条件式を削除したいです。
1,https://oshiete.goo.ne.jp/qa/2415760.html
こちらの回答を試してみましたがうまく動かず
2,http://www.ka-net.org/office/of56.html
こちらのOfficeクリップボード操作で全て貼り付け(↓)をしてみましたが、できたりできなかったりと安定しません。
素直に1の回答を参考に条件書式でついた色と同じ色を一般書式で設定する方向性で考えていますが、どこを直せばいいのかよくわかりません。。
ちなみに今シートには日付欄(月~金、結合セル)が祝日だった場合ピンクに塗りつぶす条件設定
=MATCH(A4,祝日一覧,0)>0 と、
その下の予定欄をグレーに塗りつぶす条件設定
=COUNTIF(祝日一覧,INDIRECT(ADDRESS(INT(ROW()/4)*4,INT(COLUMN(B1)/2)*2-1)))
のふたつがあります。
長くなってしまいましたが、どなたか教えて頂けると助かります。
2で試したコード
--------------------
Public Sub Sample()
DoActionOfficeClipboard "すべてクリア" ''「すべてクリア」実行
Range("A4:B23").Select
Selection.Copy
DoActionOfficeClipboard "すべて貼り付け" '「すべて貼り付け」実行
DoActionOfficeClipboard "すべてクリア" ''「すべてクリア」実行
Range("C4:D23").Select
Selection.Copy
DoActionOfficeClipboard "すべて貼り付け" '「すべて貼り付け」実行
DoActionOfficeClipboard "すべてクリア" ''「すべてクリア」実行
Range("E4:F23").Select
Selection.Copy
DoActionOfficeClipboard "すべて貼り付け" '「すべて貼り付け」実行
DoActionOfficeClipboard "すべてクリア" ''「すべてクリア」実行
Range("G4:H23").Select
Selection.Copy
DoActionOfficeClipboard "すべて貼り付け" '「すべて貼り付け」実行
DoActionOfficeClipboard "すべてクリア" ''「すべてクリア」実行
Range("I4:J23").Select
Selection.Copy
DoActionOfficeClipboard "すべて貼り付け" '「すべて貼り付け」実行
DoActionOfficeClipboard "すべてクリア" ''「すべてクリア」実行
End Sub
--------------------

No.2ベストアンサー
- 回答日時:
No.1です。
>ただ透明セルが白の塗りつぶしになってしまいました。
ん~~~
前回のコードはZ1以降にコピー&ペーストしたセルは元データの見た目の書式をそのまま貼り付けていますので
もしかして元データそのものが「白」で塗りつぶされているコトはありませんか?
そうでなければ「白」に塗りつぶされるのは考えにくいのですが・・・
とりあえず、「白」の場合のみ「塗りつぶしなし」にしてみました。
↓のコードに変更してみてください。
Sub Sample2()
Dim c As Range, lastRow As Long, lastCol As Long, cnt As Long
With Selection
lastRow = .Rows.Count
lastCol = .Columns.Count
.Copy Range("Z1")
For Each c In Range("Z1").Resize(lastRow, lastCol)
cnt = cnt + 1
c.Interior.Color = Selection(cnt).DisplayFormat.Interior.Color
Next c
cnt = 0
.FormatConditions.Delete
For Each c In Range("Z1").Resize(lastRow, lastCol)
cnt = cnt + 1
'//▼ ここから修正
'//Z1以降のセルに「白」の塗りつぶしがあれば、「塗りつぶしなし」に
If c.Interior.ColorIndex = 2 Then
Selection(cnt).Interior.ColorIndex = xlNone
Else
Selection(cnt).Interior.Color = c.Interior.Color
End If
'//▲ ここまで
Next c
Range("Z1").Resize(lastRow, lastCol).Clear
End With
End Sub
こんなんではどうですか?m(_ _)m
画像にもあるようにセルの境目の線は見えているので白で塗りつぶしてはいないと思いますが・・・。
ともあれこちらのコードで希望通りに出来ました!
すぐにこんなコードが書けるなんて、私ももっと勉強しないとですね。
何度もありがとうございました!!
No.1
- 回答日時:
こんばんは!
条件付き書式は消して、塗りつぶしだけは残したい!という解釈です。
画像を拝見するとExcel2010のようですので、Displayformatオブジェクトを使ってみました。
安直な方法ですが、一旦Z列以降に選択セルの塗りつぶしの色を退避させておいて
選択範囲の条件付き書式 → 対させている書式(色)で選択セルを塗りつぶし
といった手順にしてみました。
尚、Z列に一旦退避させていますので、Z列以降は使っていないという前提です。
シートモジュールにしてみてください。
Sub Sample1()
Dim c As Range, lastRow As Long, lastCol As Long, cnt As Long
With Selection
lastRow = .Rows.Count
lastCol = .Columns.Count
.Copy Range("Z1")
For Each c In Range("Z1").Resize(lastRow, lastCol)
cnt = cnt + 1
c.Interior.Color = Selection(cnt).DisplayFormat.Interior.Color
Next c
cnt = 0
.FormatConditions.Delete
For Each c In Range("Z1").Resize(lastRow, lastCol)
cnt = cnt + 1
Selection(cnt).Interior.Color = c.Interior.Color
Next c
Range("Z1").Resize(lastRow, lastCol).Clear
End With
End Sub
※ 必ず元データを範囲指定してマクロを実行してください。
こんなんではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セルを結合したA4とA5の条件付...
-
excel:条件付き書式の適用範囲...
-
Excelで社歴管理をしており4年...
-
ある倍数だけを塗りつぶす方法 ...
-
Excelで表を作り、自動で今月の...
-
条件付き書式の式の書き方で「...
-
エクセルで1行空けて色づけ&指...
-
色のリンクは出来ますか?【エク...
-
左列の文字の色と同じ文字の色...
-
if関数がわかりません。
-
エクセルの折られたセルを戻したい
-
エクセル 条件付書式で時刻の...
-
エクセルの小計のみに色をつけ...
-
スプレッドシートにて、条件付...
-
Excel2010 日付列を結合した予...
-
excel 2013
-
条件付書式で特定のセルに数値...
-
Excel2010 ファイルが重い原因
-
「#N/A」のエラーを表示させな...
-
パソコン(マクロ)に詳しい方お...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セルを結合したA4とA5の条件付...
-
excel:条件付き書式の適用範囲...
-
Excelで社歴管理をしており4年...
-
Excelで表を作り、自動で今月の...
-
ある倍数だけを塗りつぶす方法 ...
-
色のリンクは出来ますか?【エク...
-
エクセル 条件付書式で時刻の...
-
左列の文字の色と同じ文字の色...
-
Excelの塗りつぶしの反映
-
条件付き書式のやり方。隣のセ...
-
エクセルで
-
【Excel】ガントチャートの作成...
-
条件付き書式設定で色をつけた...
-
エクセルの折られたセルを戻したい
-
エクセル 文字列に数字を含む場...
-
Excel2010 日付列を結合した予...
-
エクセルの小計のみに色をつけ...
-
エクセル2010の書式の条件設定...
-
エクセルの条件付き書式による...
-
Excelで隣のセルを参照し...
おすすめ情報
tomo04さんありがとうございます!
一瞬でできました!
ただ透明セルが白の塗りつぶしになってしまいました。
ついでといっては失礼ですが、白色セルを塗りつぶしなしにすることはできますか?