Выделите верхнюю строку в Excel только для ячеек со значениями | MS доступ - PullRequest
0 голосов
/ 07 августа 2020

По сути, у меня есть следующий код, который я использую в MS Access после экспорта Excel. Это хорошо работает для применения функций фильтра и выделения значений ячеек жирным шрифтом, но как я могу также выделить ячейки с теми же значениями?

   'Specifying Tables

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Table1",".xlsx", True


DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Table2",".xlsx", True

Call ModifyExportedExcelFileFormats(".xlsx", "Table1")

Call ModifyExportedExcelFileFormats(".xlsx", "Table2")

__

Public Sub ModifyExportedExcelFileFormats(sFile As String, sSheet As String)

Dim xlApp As Object
Dim xlSheet As Object

Set xlApp = CreateObject("Excel.Application")
Set xlSheet = xlApp.Workbooks.Open(sFile).Sheets(1)



With xlApp
        .Application.Sheets(sSheet).Select
        .Application.Rows("1:1").Select
        .Application.Selection.Font.Bold = True
        
        .Application.range("A1").Select
        .Application.Selection.AutoFilter
        
        
        .Application.Cells.Select
        .Application.Selection.Columns.AutoFit
        .Application.range("A1").Select
        
        .Application.Activeworkbook.Save
        .Application.Activeworkbook.Close
        .Quit
   End With

End Sub

Как это можно правильно использовать для выделения только тех ячеек в верхней строке, в которых есть значения?

        .Application.Selection.Interior.Color = vbYellow

1 Ответ

0 голосов
/ 07 августа 2020

Это работает: Range([whatever]).SpecialCells(xlCellTypeConstants).Interior.Color = vbYellow

Но если пользователи будут редактировать данные, возможно, потребуется установить правило условного форматирования. Фактически выбирать ячейки для изменения свойств необязательно. Использование синтаксиса ActiveAnything может вызвать проблемы с кодом автоматизации. Лучше использовать явную ссылку.

Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open(sFile)
With xlWb.Worksheets(sSheet).Range("A1:G1")
    .Font.Bold = True
    .Columns.AutoFit
    .FormatConditions.add Type:=xlExpression, Formula1:="=LEN(TRIM(A1))>0"
    .FormatConditions(1).Interior.Color = vbYellow
End With
xlWb.Worksheets(sSheet).Range("A1").AutoFilter
xlWb.Save
xlWb.Close
xlApp.Quit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...