Проблема, с которой вы столкнулись, связана с тем фактом, что вы не соответствуете выбранному листу для границ, измененный код ниже укажет вам правильное направление.
В данный момент ваш код будет просто смотреть на ActiveSheet, когда вы используете Range(a1, a2)
, не сообщая коду, на какой лист вы ссылаетесь, поэтому на самом деле код работает, но дважды рисует границы на одном листе. исправленный ниже код будет работать так, как я указал, какой лист нужно обновить.
Sub test()
Dim i As Long, j As Long
i = 2
j = 2
Call BICO(i)
Call ssp(j)
End Sub
Sub ssp(im)
Dim wsSSP As Worksheet: Set wsSSP = ThisWorkbook.Sheets(1)
Dim a1 As String
Dim a2 As String
a1 = "A" & im
a2 = "C" & im
wsSSP.Range(a1, a2).Borders(xlDiagonalDown).LineStyle = xlNone
wsSSP.Range(a1, a2).Borders(xlDiagonalUp).LineStyle = xlNone
With wsSSP.Range(a1, a2).Borders(xlEdgeLeft)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With wsSSP.Range(a1, a2).Borders(xlEdgeBottom)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With wsSSP.Range(a1, a2).Borders(xlEdgeRight)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With wsSSP.Range(a1, a2).Borders(xlInsideVertical)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
wsSSP.Cells(2, 1).Value = "Saravanan"
wsSSP.Cells(2, 2).Value = "Saravanan S/No Ramsing, Pondichary -60089"
wsSSP.Cells(2, 3).Value = "9791709616"
End Sub
Sub BICO(jm)
Dim wsBICO As Worksheet: Set wsBICO = ThisWorkbook.Sheets(2)
Dim a1 As String
Dim a2 As String
a1 = "A" & jm
a2 = "C" & jm
wsBICO.Range(a1, a2).Borders(xlDiagonalDown).LineStyle = xlNone
wsBICO.Range(a1, a2).Borders(xlDiagonalUp).LineStyle = xlNone
With wsBICO.Range(a1, a2).Borders(xlEdgeLeft)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With wsBICO.Range(a1, a2).Borders(xlEdgeBottom)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With wsBICO.Range(a1, a2).Borders(xlEdgeRight)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With wsBICO.Range(a1, a2).Borders(xlInsideVertical)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
wsBICO.Cells(2, 1).Value = "Saravanan"
wsBICO.Cells(2, 2).Value = "Saravanan S/No Ramsing, Pondichary -60089"
wsBICO.Cells(2, 3).Value = "9791709616"
End Sub
UPDATE:
Чтобы сделать код более полезным, поскольку вы повторяете код для разных рабочих листов, вы можете изменить подпрограмму, чтобы она воспринимала рабочую таблицу в качестве аргумента, чтобы вы могли вызывать одну и ту же подпрограмму для воздействия на разные рабочие листы. посмотрите на код ниже:
Sub test()
Dim i As Long
i = 2
Call DrawBorder(i, ThisWorkbook.Sheets(1))
Call DrawBorder(i, ThisWorkbook.Sheets(2))
End Sub
Sub DrawBorder(im As Long, ws As Worksheet)
Dim a1 As String, a2 As String
a1 = "A" & im
a2 = "C" & im
ws.Range(a1, a2).Borders(xlDiagonalDown).LineStyle = xlNone
ws.Range(a1, a2).Borders(xlDiagonalUp).LineStyle = xlNone
With wsSSP.Range(a1, a2).Borders(xlEdgeLeft)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With ws.Range(a1, a2).Borders(xlEdgeBottom)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With ws.Range(a1, a2).Borders(xlEdgeRight)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With ws.Range(a1, a2).Borders(xlInsideVertical)
.LineStyle = xlSolid
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
ws.Cells(2, 1).Value = "Saravanan"
ws.Cells(2, 2).Value = "Saravanan S/No Ramsing, Pondichary -60089"
ws.Cells(2, 3).Value = "9791709616"
End Sub