I've made some tweaks and changes to your code in order to help you out.
First, you can convert a Range object, which is normally two-dimensional, into a one-dimensional array by using the WorksheetFunction.Transpose(myRange) method where myRange is the range you want to convert to one dimension.
I did that in the Call statement, so it looks something like this:
Option Explicit
Private Sub DateArrays()
Dim rngToPass As Range
Dim dtMyDate As Date
Dim containsDt As Boolean
Set rngToPass = Sheet1.Range("A1:A4")
dtMyDate = "8/7/2015"
containsDt = IsInArray(dtMyDate, Application.WorksheetFunction.Transpose(rngToPass))
End Sub
This will pass in a one-dimensional array made from rngToPass.
I did have to modify your function slightly:
Function IsInArray(ByVal MyDate As Date, ByRef Holiday_Calendar As Variant) As Boolean
Dim length As Integer
length = WorksheetFunction.Count(Holiday_Calendar)
Dim counter As Integer
For counter = 1 To length
If Holiday_Calendar(counter) = MyDate Then
IsInArray = True
Exit Function
End If
Next counter
IsInArray = False
End Function
I noticed that your counter variable started at 0, but the transposed array index begins at 1 so I changed the 0 to 1.
I also noticed that when the condition matches, the function briefly sets IsInArray to true but execution would continue and thus IsInArray would get reset to false at the end of the function, and so was always returning false. I've included an Exit Function statement to break out of the function if we find a match.
This should get you started at least.
Holiday_Calendaris one dimensional, but some other array is two dimensional? TryIf Holiday_Calendar(counter,1) = MyDate ThenIsInArray = Falseat the end of your function. (;