Sub ik() With ThisWorkbook.Sheets.Add .[a:h].ColumnWidth = 2.6 For i = 1 To 8 For j = 1 To 8 If (i + j) Mod 2 Then .Cells(i, j).Interior.Color = vbYellow Next j, i .[a1:h8].Borders.LineStyle = xlThin End With End Sub
[/vba]
ну и на закуску - классика [vba]
Код
Sub ik() With ThisWorkbook.Sheets.Add .[a:h].ColumnWidth = 2.6 For i = 1 To 8 For j = 1 To 8 If (i + j) Mod 2 Then .Cells(i, j).Interior.Color = vbYellow Next j, i .[a1:h8].Borders.LineStyle = xlThin End With End Sub
Sub drawChessTable() Cells.Clear Cells.Delete Dim rngTable As Range, cell As Range, i As Integer Set rngTable = [B2].Resize(8, 8) rngTable.Offset(, -1).Resize(, 10).ColumnWidth = 3 For Each cell In rngTable If (cell.Row - rngTable.Row + cell.Column - rngTable.Column) Mod 2 <> 0 Then cell.Interior.ColorIndex = 16 End If Next With rngTable For i = 7 To 10 .Borders(i).LineStyle = xlDouble Next .Borders(11).LineStyle = xlContinuous .Borders(12).LineStyle = xlContinuous End With With rngTable.Offset(8).Resize(1) .Value = Array("a", "b", "c", "d", "e", "f", "g", "h") .HorizontalAlignment = xlCenter End With For Each cell In rngTable.Offset(, -1).Resize(, 1) cell.Value = 8 + rngTable.Row - cell.Row Next End Sub
[/vba]
Да, в первом варианте "закраска" выполнялась условным форматированием
А вот так мог бы выглядеть "правильный" код
[vba]
Код
Option Explicit
Sub drawChessTable() Cells.Clear Cells.Delete Dim rngTable As Range, cell As Range, i As Integer Set rngTable = [B2].Resize(8, 8) rngTable.Offset(, -1).Resize(, 10).ColumnWidth = 3 For Each cell In rngTable If (cell.Row - rngTable.Row + cell.Column - rngTable.Column) Mod 2 <> 0 Then cell.Interior.ColorIndex = 16 End If Next With rngTable For i = 7 To 10 .Borders(i).LineStyle = xlDouble Next .Borders(11).LineStyle = xlContinuous .Borders(12).LineStyle = xlContinuous End With With rngTable.Offset(8).Resize(1) .Value = Array("a", "b", "c", "d", "e", "f", "g", "h") .HorizontalAlignment = xlCenter End With For Each cell In rngTable.Offset(, -1).Resize(, 1) cell.Value = 8 + rngTable.Row - cell.Row Next End Sub
[/vba]
Да, в первом варианте "закраска" выполнялась условным форматированиемAndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Четверг, 09.07.2015, 13:13
AndreTM, это фантастика!!! Расскажите мне, пожалуйста, откуда вы все почерпнули свои знания. Где найти материалы, чтобы самостоятельно писать такие коды??? Пойти на курсы по изучению VBA в дальнейшем обязуюсь!!!
AndreTM, это фантастика!!! Расскажите мне, пожалуйста, откуда вы все почерпнули свои знания. Где найти материалы, чтобы самостоятельно писать такие коды??? Пойти на курсы по изучению VBA в дальнейшем обязуюсь!!! Milasha
For i = 1 To 8 For j = 1 To 8 If i Mod 2 = 1 Then If j Mod 2 = 1 Then Cells(i + 1, j + 1).Interior.ColorIndex = clr Else If j Mod 2 = 0 Then Cells(i + 1, j + 1).Interior.ColorIndex = clr End If Next j Next i End Sub
Public Sub Cln() Range("A1:J10").Select Selection.ClearContents Cells(1, 1).Select End Sub
Public Sub ClnFrmt() Range("A1:J10").Select Selection.ClearFormats Cells(1, 1).Select End Sub
[/vba]
Вот без красивостей
[vba]
Код
Public Sub desk() Dim i As Byte, j As Byte Const clr As Byte = 5
For i = 1 To 8 For j = 1 To 8 If i Mod 2 = 1 Then If j Mod 2 = 1 Then Cells(i + 1, j + 1).Interior.ColorIndex = clr Else If j Mod 2 = 0 Then Cells(i + 1, j + 1).Interior.ColorIndex = clr End If Next j Next i End Sub
Public Sub Cln() Range("A1:J10").Select Selection.ClearContents Cells(1, 1).Select End Sub
Public Sub ClnFrmt() Range("A1:J10").Select Selection.ClearFormats Cells(1, 1).Select End Sub
Sub Rio_Chess() Dim RngX As Range, j As Byte [B2:I9].Borders.LineStyle = 1: [B:I].ColumnWidth = 2.5 For Each RngX In [B2:I9] j = (RngX.Row + RngX.Column) Mod 2: RngX.Interior.ColorIndex = j Next RngX End Sub
[/vba]
В копилку коротких ленивых кодов.
[vba]
Код
Sub Rio_Chess() Dim RngX As Range, j As Byte [B2:I9].Borders.LineStyle = 1: [B:I].ColumnWidth = 2.5 For Each RngX In [B2:I9] j = (RngX.Row + RngX.Column) Mod 2: RngX.Interior.ColorIndex = j Next RngX End Sub