линия вызова времени вызова подфункции vba Ошибка вниз - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть вызов функции тестирования по умолчанию в VBA. первая загрузка данных в функцию vba BICO () успешно загружена, но строка не тонет в первом листе. вторая функция - это данные загружаемых данных, но строка тонет во второй функции это моя ошибка У меня есть доля в моем коде, как продать мой широкополосный. Любое решение или любая ссылка.

Sub test()
    Dim im, jm As Integer
    im = 1
    jm = 2
    Call BICO(i)
    Call ssp(j)
End Sub

Sub ssp(im)
    Dim i As Integer
    i = 2
    Dim a1 As String
    Dim a2 As String
    a1 = "A" & i
    a2 = "C" & i

    Range(a1, a2).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With

    Sheets(1).Cells(2, 1).Value = "Saravanan"
    Sheets(1).Cells(2, 2).Value = "Saravanan  S/No Ramsing, Pondichary -60089"
    Sheets(1).Cells(2, 3).Value = "9791709616"
End Sub

Sub BICO(jm)
    Dim i As Integer
    i = 2
    Dim a1 As String
    Dim a2 As String
    a1 = "A" & i
    a2 = "C" & i

    Range(a1, a2).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlSolid
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With

    Sheets(2).Cells(2, 1).Value = "Saravanan"
    Sheets(2).Cells(2, 2).Value = "Saravanan  S/No Ramsing, Pondichary -60089"
    Sheets(2).Cells(2, 3).Value = "9791709616"
End Sub

Мне нужно два листа закрасить линию, используя vba. enter image description here

Данные не строки не отображаются

enter image description here

Это пух, который он может утопить.

нужен лист1 и лист2, чтобы нарисовать линию сетки.

1 Ответ

0 голосов
/ 01 ноября 2018

Проблема, с которой вы столкнулись, связана с тем фактом, что вы не соответствуете выбранному листу для границ, измененный код ниже укажет вам правильное направление.

В данный момент ваш код будет просто смотреть на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...