0% found this document useful (0 votes)
54 views

Use Array Elements To Fill A Range

This document contains a VBA code subroutine that takes an array as input, validates that the user-selected range is the correct size to hold the array elements, and fills the range with the array values. It first defines and populates the arrays. It then prompts the user to select a range, validates the size, and fills the range with the array headings in the first row and element values in the remaining rows.

Uploaded by

jonaros
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views

Use Array Elements To Fill A Range

This document contains a VBA code subroutine that takes an array as input, validates that the user-selected range is the correct size to hold the array elements, and fills the range with the array values. It first defines and populates the arrays. It then prompts the user to select a range, validates the size, and fills the range with the array headings in the first row and element values in the remaining rows.

Uploaded by

jonaros
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

USE ARRAY ELEMENTS TO FILL A RANGE, CHOSEN BY USER, WITH HEADINGS

Sub ArrayToTable()

Dim vArray(), vArrayHeadings()

Dim rTable As Range

Dim rCell As Range

Dim lArrayElmnt As Long

Dim lHeads As Long, lRows As Long

Dim lreply As Long, lDataCells As Long

'Fill arrays

vArray = Array(1, 2, 3, 4, 5, 6, 7)

vArrayHeadings = Array("Head1", "Head2", "Head3", "Head4")

On Error Resume Next

Set rTable = Cells(1, 1)

Set rTable = Application.InputBox(Prompt:="Select Table Range", Type:=8)

If rTable Is Nothing Or rTable.Address = "$A$1" Then Exit Sub 'cancel or


non valid range

lHeads = UBound(vArrayHeadings) + 1

lDataCells = UBound(vArray)

lRows = lDataCells / lHeads

If lHeads <> rTable.Columns.Count Then

lreply = MsgBox("Selection Range Must Have " & _

lHeads & " Columns. Try Again", vbQuestion + vbCritical + vbOKCancel)

If lreply = vbCancel Then


Exit Sub

Else

Run "ArrayToTable"

End If

ElseIf rTable.Rows.Count <> lRows + 1 Then

lreply = MsgBox("Table Range (Including Headings) Must Be " & _

lHeads & " Columns Wide By " & lRows + 1 & " Rows High." _

& " Try Again", vbQuestion + vbOKCancel)

If lreply = vbCancel Then

Exit Sub

Else

Run "ArrayToTable"

End If

End If

With rTable

With .Range(Cells(1, 1), Cells(1, UBound(vArrayHeadings) + 1))

.Value = vArrayHeadings

.Font.Bold = True

End With

Set rTable = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)

End With

For Each rCell In rTable

rCell = vArray(lArrayElmnt)

lArrayElmnt = lArrayElmnt + 1
If lArrayElmnt = lDataCells Then Exit Sub

Next rCell

On Error GoTo 0

End Sub

You might also like