I have an issue where I get the 'application-defined or object defined error' when trying to output an array into a range.
Worksheets("Log").Range(.Cells(MnthCount 4, 6), .Cells(MnthCount 4, MnthDayCount 5)) = FrstLtr
That is the code, the array FrstLtr is 31 values in length. MnthCount is 2, MnthDayCount is 31. There should be enough space in the range to output the array? What is the issue here?
CodePudding user response:
Copy Array Values to Worksheet
A Quick Fix
With Worksheets("Log")
.Range(.Cells(MnthCount 4, 6), _
.Cells(MnthCount 4, MnthDayCount 5)).Value = FrstLtr
End With
Understand This
Dim cCount As Long
cCount = (MnthDayCount 5) - (6) (1) ' 5 - 6 1 = 0
cCount = MnthDayCount
The Resize Connection
Worksheets("Log").Cells(MnthCount 4, 6).Resize(, MnthDayCount).Value = FrstLtr
Worksheets("Log").Cells(MnthCount 4, 6).Resize(, cCount).Value = FrstLtr
The Array Resize
With Worksheets("Log").Cells(MnthCount 4, 6)
.Resize(, UBound(FstrLtr) 1).Value = FrstLtr ' 1D zero-based
.Resize(, UBound(FstrLtr)).Value = FrstLtr ' 1D one-based
.Resize(, UBound(FstrLtr, 2) 1).Value = FrstLtr ' 2D zero-based
.Resize(, UBound(FstrLtr, 2)).Value = FrstLtr ' 2D one-based
End With
A Common Scenario
Dim wb As Workbook: Set wb = ThisWorkbook
Dim dws As Worksheet: Set dws = wb.Worksheets("Log")
With dws.Cells(MnthCount 4, 6)
.Resize(, cCount).Value = FrstLtr
End With
