#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