Проблемы с кнопками Excel

#excel #vba

#excel #vba

Вопрос:

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

Однако возникает проблема, когда я назначаю макрос кнопке в отдельной книге, он не заполняет все строки правильными значениями. (См. Черный круг на изображении) введите описание изображения здесь

Мой код приведен ниже

   sub OrganizingResearchTracker()
    
    'Variables
    Dim lr As Long
    lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
    
    Dim tbl As ListObject
    Dim wbNames As Variant, wb As Workbook, w As Workbook, El As Variant, boolFound As Boolean
    
      wbNames = Split("January,February,March,April,May,June,July,August,September,October,November,December", ",")
      For Each w In Workbooks
        For Each El In wbNames
            If w.Name = "Completed Research Docs_Tracker_" amp; El amp; " 2020.xlsm" Then
                Set wb = w: boolFound = True: Exit For
            End If
        Next
        If boolFound Then Exit For 'in order to stop iteration if a lot of workbooks are open
         Next
    
    '1. Column AB - Descriptive Field - Client Name - Manager Name - Research Deliverable
    
    wb.Activate
    Set tbl = ActiveSheet.ListObjects("Table_owssvr")
    With tbl
            .ListColumns.Add.Name = "Client Name - Manager Name - Research Deliverable"
    End With
    
        Range("AB2:AB" amp; lr).FormulaR1C1 = "=CONCATENATE(RC[-22],"" - "",RC[-26],"" - "",RC[-15])"
end sub
  

У кого-нибудь была эта проблема, и он знает, как ее исправить? Спасибо

Комментарии:

1. Попробуйте .ListColumns("Client Name - Manager Name - Research Deliverable").DataBodyRange.FormulaR1C1 = ... , внутри With tbl .

2. @BigBen вы знаете, почему кнопки борются с этим?

3. Я предполагаю lr , что это не то, что вы ожидаете.

4. но это работает с обычным кодом, только не тогда, когда я назначаю кнопку, странно

Ответ №1:

Было бы проще просто записать формулу в .DataBodyRange ListColumn созданную вами.

 With tbl
    ...
    .ListColumns("Client Name - Manager Name - Research Deliverable").DataBodyRange.FormulaR1C1 = _
        "=CONCATENATE(RC[-22],"" - "",RC[-26],"" - "",RC[-15])"
End With