I wrote a crude function to select and concatenate cells based on a range.
Function GetSkills(CellRef As String, CellRefEnd As String, Delimiter As String)
Dim CellStart As Range
Dim CellEnd As Range
Dim LoopVar As Long
Dim StartRow As Long
Dim EndRow As Long
Dim Concat As String
Dim Col As Long
Set CellStart = Worksheets(1).Cells.Range("B" & CellRef)
Set CellEnd = Worksheets(1).Cells.Range("B" & CellRefEnd)
Col = CellStart.Column
StartRow = CellStart.Row
EndRow = CellEnd.Row
With Range(CellStart, CellEnd)
.Merge
.WrapText = True
End With
Concat = ""
For LoopVar = StartRow To EndRow
Concat = Concat & Cells(LoopVar, Col).Value
If LoopVar <> EndRow Then Concat = Concat & Delimiter & " "
Next LoopVar
GetSkills = Concat
End Function
Within it I'm trying to merge the cells, when I run the function I get a prompt saying:
The selection contains multiple data values. Merging into once cell will keep the upper-left most data only
I click OK and Excel crashes, restarts, and prompts the dialog again. Is there another way to merge a block of cells using VBA?
.Merge) from within aSubinstead of aFunction. Reasons being the function could be called from the sheet and merge itself out of existence, and the Function will run with every recalculation cycle. - Kevin Pope