Ich habe den folgenden Code, den ich benutze, um den Befehlstext einer Abfrage zu verbessern. Das Problem ist mit der letzten Zeile, wo ich versuche, einen Bereich zu übergeben (RepStartRng). Anstatt die Bereichsadresse zu übergeben, übergibt mein Code den Bereichswert. Bitte sehen Sie unten und danke im Voraus.Pass Bereich in Funktion
Sub UseClass()
Dim c As Report_
Set c = New Report_
Dim RepC As Long
Dim Repcol As String
Dim Counter As Long
Dim RepStartRng As Range
c.Day = FindDay()
Repcol = ColLetter(FindDay())
RepC = CountReports(Repcol)
c.name = "A"
Debug.Print "Repcol: " & Repcol
Debug.Print RepC
c.RepCount = RepC
For i = 1 To c.RepCount
Counter = i
Report = Rep(Counter, ColLetter(FindDay()))
Set RepStartRng = Range(Repcol & "3")
RepStartRng.Select
Debug.Print RepStartRng.Address
UpdateQuery Report, RepStartRng, Counter
Next i
End Sub
Function UpdateQuery(Report As String, RepRng As Range, Counter As Long)
Dim Rng As Range
Set RepRng = RepRng
Dim Dat As String
Dat = QueryDates(Rng)
Dim cn As WorkbookConnection
Dim wb As Workbook
Dim NewWb As Workbook
Set wb = ActiveWorkbook
Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection
For Each cn In ThisWorkbook.Connections
If cn.name = Report Then
Set oledbCn = cn.OLEDBConnection
Debug.Print Dat
oledbCn.CommandText = Replace(oledbCn.CommandText, "?", "'" & Dat & "'")
Sheets(Rng.Value).Copy
Set NewWb = ActiveWorkbook
NewWb.SaveAs ("C:\Users\krishn.patel\Desktop\" & Rng.Value & ".xlsb"), FileFormat:=50
NewWb.Close
oledbCn.CommandText = Replace(oledbCn.CommandText, "'" & Dat & "'", "?")
End If
Next
End Function
Wenn Sie einen Bereich übergeben, übergeben Sie das Bereichsobjekt, nicht die Adresse. Warum glaubst du, dass es den Wert übersteigt? Wozu dient die Zeile 'Set RepRng = RepRng'? Und warum verwenden Sie nicht den Bereich, den Sie übergeben (RepRng)? –