rsaphier
asked on
RunTime Error 91 - Object Variable or with block variable not set
When trying to execute the attached code I'm receiving a runtime error when it hits
".cells.find("NoMatchTotal ..."
There may be more errors but this is currently where I'm stuck.
Any suggestions?
".cells.find("NoMatchTotal
There may be more errors but this is currently where I'm stuck.
Any suggestions?
Dim qdf As QueryDef
For Each qdf In CurrentDb.QueryDefs
If Left(qdf.Name, 1) = "~" Then
Else
strName = qdf.Name
Select Case Left(strName, 4)
Case Is = "qry_"
strfile = Mid(strName, 5, 99)
Case Else
strfile = strName
End Select
strPath = "\\bhihnbwfa01\Groups\Projects\SAP_Validation\PhaseFinal\Spreadsheets\SPCritical\"
strNewFile = strPath & strfile & ".xlsx"
DoCmd.OutputTo acOutputQuery, strName, acFormatXLSX, strNewFile, False
strOutput = strPath & strfile & ".xlsx"
'prelim cleanup
Dim exapp As Excel.Application
Dim exbook As Excel.Workbook
Set exapp = Excel.Application
exapp.DisplayAlerts = False
Set exbook = exapp.Workbooks.Open(strOutput)
exapp.Visible = True 'set back to false
exapp.Interactive = True
With exapp
.Cells.Select
.Selection.ColumnWidth = 88.29
.Cells.EntireRow.AutoFit
.Cells.EntireColumn.AutoFit
.Rows("1:1").Select
.Selection.AutoFilter
.Range("A1").Select
.Cells.Find("NoMatchTotal", .ActiveCell, xlFormulas, xlPart, xlByColumns, xlNext, False, False).Activate
.ActiveCell.Offset(0, -1).Range("A1").Select
.Range(.Selection, .Selection.End(xlDown)).Select
.Range(.Selection, .Cells(1)).Select
With .Selection.Interior
.PatternColor = 12632256
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
.Range("A1").Select
.Cells.Find("NoMatchTotal", ActiveCell, xlFormulas, xlPart, xlByColumns, xlNext, False, SearchFormat:=False).Activate
.Selection.Copy
.Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Application.CutCopyMode = False
.Range(Selection, Selection.End(xlToLeft)).Select
.ActiveWorkbook.SaveAs strOutput, xlOpenXMLWorkbook, , , , False
.Application.Quit
End With
End If
MoveOn:
Next qdf
MsgBox ("Export and Preliminary Spreadsheet Formatting Completed!")
Set qdf = Nothing
That error with the Find method usually indicates that Excel could not find a cell meeting the search criteria
try this revision, add the microsoft DAO x.x object library to your references
Dim qdf As dao.QueryDef, db as DAO.database
set db=currentdb
For Each qdf In db.QueryDefs
Dim qdf As dao.QueryDef, db as DAO.database
set db=currentdb
For Each qdf In db.QueryDefs
ASKER
The string that it is searching for exits in the excel workbook.
ASKER
In the case where it might not, how would I code for that?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Adding that produces Runtime error 424 .. object required.
Post the revised procedure, please
ASKER
I'm on a really tight deadline to resolve this and truly appreciate your help!!!
Dim qdf As dao.QueryDef
Dim db As dao.Database
Set db = CurrentDb
For Each qdf In db.QueryDefs
If Left(qdf.Name, 1) = "~" Then
Else
strName = qdf.Name
Select Case Left(strName, 4)
Case Is = "qry_"
strfile = Mid(strName, 5, 99)
Case Else
strfile = strName
End Select
strPath = "\\bhihnbwfa01\Groups\Projects\SAP_Validation\PhaseFinal\Spreadsheets\SPCritical\"
strNewFile = strPath & strfile & ".xlsx"
DoCmd.OutputTo acOutputQuery, strName, acFormatXLSX, strNewFile, False
strOutput = strPath & strfile & ".xlsx"
'prelim cleanup
Dim exapp As Excel.Application
Dim exbook As Excel.Workbook
Set exapp = Excel.Application
exapp.DisplayAlerts = False
Set exbook = exapp.Workbooks.Open(strOutput)
exapp.Visible = True 'set back to false
exapp.Interactive = True
With exapp
.Cells.Select
.Selection.ColumnWidth = 88.29
.Cells.EntireRow.AutoFit
.Cells.EntireColumn.AutoFit
.Rows("1:1").Select
.Selection.AutoFilter
.Range("A1").Select
If .CountIf(.ActiveSheet.[1:1], "NoMatchTotal") > 0 Then
.Cells.Find("NoMatchTotal", .ActiveCell, , , , xlNext, False, False).Activate = ""
.ActiveCell.Offset(0, -1).Range("A1").Select
.Range(.Selection, .Selection.End(xlDown)).Select
.Range(.Selection, .Cells(1)).Select
With .Selection.Interior
.PatternColor = 12632256
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
Else
End If
.ActiveWorkbook.SaveAs strOutput, xlOpenXMLWorkbook, , , , False
.Application.Quit
End With
End If
Next qdf
MsgBox ("Export and Preliminary Spreadsheet Formatting Completed!")
Set qdf = Nothing
Set db = Nothing
OK, let's come at it from a different angle. In the block below, describe in sentences exactly what you are trying to do.
If .CountIf(.ActiveSheet.[1:1], "NoMatchTotal") > 0 Then
.Cells.Find("NoMatchTotal", .ActiveCell, , , , xlNext, False, False).Activate = ""
.ActiveCell.Offset(0, -1).Range("A1").Select
.Range(.Selection, .Selection.End(xlDown)).Select
.Range(.Selection, .Cells(1)).Select
With .Selection.Interior
.PatternColor = 12632256
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
Else
End If
ASKER
I am searching for the string "NoMatchTotal" in Row 1.
If it exists, select all colums to the left of that column and use a fill color of gray
If it exists, select all colums to the left of that column and use a fill color of gray
Then try:
If .CountIf(.ActiveSheet.[1:1], "NoMatchTotal") > 0 Then
With .Cells(1, 1).Resize(1, .Match("NoMatchTotal", .ActiveSheet.[1:1], 0) - 1).EntireColumn.Interior
.PatternColor = 12632256
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
Else
End If
ASKER
ok ... I figured out the problem
.Cells.Find("NoMatchTotal" , .ActiveCell, , , , xlNext, False, False).Activate = ""
should be
.Cells.Find("NoMatchTotal" , .ActiveCell, , , , xlNext, False, False).Activate
.Cells.Find("NoMatchTotal"
should be
.Cells.Find("NoMatchTotal"
Good catch :)
ASKER
Now back to my conditional formatting problem ... can you help me with automating this?
Possibly. Implementing Conditional Formatting via VBA can be a bear, though :)
ASKER
Ok ... should I go back to my other post and close this one out?
Let's close this out, and try to tackle automating the CF in the other one.