Excel VBA script – concatenates multiple values using Loop
The approach I took to your problem led me to separate it into two stages: the first determine the locations of the source data and the second processes the data to perform the concatenation.

Initially capturing your source data, I used the following data setup:



A few things to note:


Always use Option Explicit for the reasons listed there
Always define and set references to all Workbooks and Sheets
Work with Arrays, Not With Ranges


And so, based on those concepts, the setup method looked like this:



Option Explicit

Sub DataSetup()
    Dim wb As Workbook
    Set wb = ThisWorkbook

    Dim ws As Worksheet
    Set ws = wb.Sheets("Sheet1")

    Dim staticText(1 To 3) As String
    staticText(1) = ws.Range("A2")
    staticText(2) = ws.Range("A3")
    staticText(3) = ws.Range("A4")

    Dim startRow As Long
    Dim lastRow As Long
    Dim loopRange As Range
    startRow = 4
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
    Set loopRange = ws.Cells(startRow, "C").Resize(lastRow - startRow + 1, 1)

    Dim userRange As Range
    startRow = 3
    lastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row
    Set userRange = ws.Cells(startRow, "E").Resize(lastRow - startRow + 1, 1)

    Dim results As Variant
    results = LoopAndConcat(staticText, loopRange, userRange)

    Dim resultsRange As Range
    Set resultsRange = ws.Range("G2").Resize(UBound(results, 1), 1)
    resultsRange = Application.Transpose(results)
End Sub


You may notice that I didn't pass arrays to the LoopAndConcat function. We only really need that data as an array inside the function, no where else. 

Inside the work of the concatenating function, I took advantage of the fact that your static data is limited to three strings. Because of this, you can do all the work in a single loop. Working from arrays and storing the results in an array makes this function very fast. The resulting array of data can be located anywhere in the workbook you need it, the function doesn't need to care where those results end up.



Function LoopAndConcat(fixedText() As String, _
                       loopArea As Range, _
                       userArea As Range) As Variant
    '--- for speed, copy the data to memory arrays
    '    (expected Range is "n" rows by one column)
    Dim loopData As Variant
    Dim userData As Variant
    loopData = loopArea
    userData = userArea

    '--- establish results array, properly sized
    Dim results() As Variant
    ReDim results(1 To UBound(userData, 1)) As Variant

    Dim finalText As String
    Dim i As Long
    Dim j As Long
    j = 1
    For i = 1 To UBound(userData, 1)
        finalText = fixedText(1) &amp; loopData(j, 1) &amp; _
                    fixedText(2) &amp; userData(i, 1) &amp; _
                    fixedText(3)
        results(i) = finalText
        j = j + 1
        If j &gt; 3 Then
            j = 1
        End If
    Next i
    LoopAndConcat = results
End Function


My results: