|
http://www.geocities.jp/kageyamaworks/Book001.xls
こんにちは。URLを参照して下さい。
"実行前"シートに野菜&果物の一覧表があります。
"作成"シートにあるボタンをクリックすると、
一覧表が"実行後"シートの様な書式に変更されるマクロを作成しようと考えています。
●条件
1."作成"シートより左側にあるシートのみに反映される。
(右側のsheet1や2には反映されない)
2."作成"シートのB列にてあらかじめ登録している文字の塗り潰し色を
そのまま"実行前"シートの一覧表の文字に反映させる。
※反映されたのが"実行後"シート
3.ただし、("実行後"シート参照)
A4〜A6、B4〜B6、・・・O4〜O6(1段目)
A20〜A22、B20〜B22、・・・O20〜O22(2段目)
A36〜A38、B36〜B38、・・・O36〜O38(3段目)
A52〜A54、B52〜B54、・・・O52〜O54(4段目)
のそれぞれの3つのセルはそのまま4、20、36、52行の塗り潰し色を反映させる。
4.A4〜A6、B4〜B6、・・・O4〜O6(1段目)
A20〜A22、B20〜B22、・・・O20〜O22(2段目)
A36〜A38、B36〜B38、・・・O36〜O38(3段目)
A52〜A54、B52〜B54、・・・O52〜O54(4段目)
のセルの塗り潰しを判別し、隣り合ったセルの色が異なれば
縦16セル分に対して、境界線(罫線)を作成。
条件が多いですがよければチカラを貸して下さい。
宜しくお願い致します。
程遠いですが一応試行錯誤で作ったコードです。
●塗り潰し
※条件3.に対応してませんが。。。
Sub 塗り潰し()
Dim tb As Variant
Dim r As Variant
Dim i As Variant
Sheets("Sheet2").Select
With Sheets("Sheet2")
Set tb = .Range("b1", .Range("b50000").End(xlUp))
End With
Sheets("sheet1").Select
With Sheets("Sheet1")
For Each r In .Range("a1", .Range("O100").End(xlUp))
With r
For i = 1 To UBound(tb.Value)
If .Value = tb(i, 1) Then
.Interior.ColorIndex = tb(i, 1).Interior.ColorIndex
Exit For
End If
Next
End With
Next
End With
End Sub
●罫線作成
(イベントで行った為失敗。しかもひとつのセルのみでしか罫線が引けてません。)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Dim mRng As Range
Dim mR As Range
If Sh.Index = Worksheets.Count Then Exit Sub
Set mRng = Intersect(Target, Sh.Range("A4:N4,A20:N20,A36:N36"))
If mRng Is Nothing Then Exit Sub
For Each mR In Sh.Range("A4:N4,A20:N20,A36:N36") 'mRng
If Left(mR.Value, 5) <> Left(mR(1, 2), 5) And _
Not IsEmpty(mR) Then
With mR.Borders(xlRight)
.LineStyle = xlContinuous
.Weight = 4
.ColorIndex = 3
End With
Else
mR.Borders(xlEdgeRight).LineStyle = xlNone
End If
Next
End Sub
|
|