2016-04-06 17 views
0

Ich benutze ein Makro, um unter anderem eine Rechnung zu überprüfen, die ich in Excel erstellt habe, bevor ich sie speichere. Zur Zeit überprüft es die gesamte Arbeitsmappe. Ich möchte nur Zellen eines bestimmten Blattes überprüfen (weil ich die Namen und Adressen der Personen auf der Rechnung nicht überprüfen möchte).VBA Rechtschreibprüfung für bestimmte Zellen in Excel

Insbesondere würde ich nur Zellen D15-D19 auf dem Blatt „Rechnung“ und Zelle D38 auf Blatt „Sicherheitsüberprüfung“ buchstabieren möchten überprüfen

Kann jemand mich in die richtige Richtung?

Dies ist der VBA-Code, die ich zur Zeit bin mit, dass ich verfeinern möchte:

Option Explicit 
Sub SaveAsSafety() 
'Saves filename as value of A1 plus the current date 


Application.CommandBars("Tools").Controls("Spelling...").Execute 
'Invokes spell check 

Dim newFile As String, fName As String 
' Don't use "/" in date, invalid syntax 
fName = Range("M9").Value 
'Change the date format to whatever you'd like, but make sure it's in quotes 
newFile = fName & " - " & Range("D10").Value & " - " & Range("D9") 
' Change directory to suit your PC, including USER NAME 

Sheets(Array("Safety Inspection", "Invoice")).Select 
Sheets("Safety Inspection").Activate 

ChDir _ 
"C:\Users\Brian\Google Drive\Buller Heating and Air\Invoices" 
ActiveWorkbook.SaveAs Filename:=newFile 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Range("A1").Value _ 
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
:=False, OpenAfterPublish:=False 

End Sub 
+0

Sie sind fast da. Sie haben bereits das richtige Sheets-Array, können ein Array mit Bereichsadressen hinzufügen und dann über die beiden gleichzeitig iterieren, um sowohl ein Blatt als auch den entsprechenden Bereich zu sammeln, der mit Ihrer Zauberroutine zusammenhängt (die Sie oben nicht angegeben haben) Code) – user3598756

Antwort

1

Rechtschreibung in bestimmten Zellen Um zu überprüfen, versuchen:

Sub bbuller() 
    Dim boo As Boolean 

    s = Array("Invoice!D15", "Invoice!D16", "Invoice!D17", "Invoice!D18", "Invoice!D19", "'Safety Inspection'!D38") 
    For Each ss In s 
     boo = CheckItNew(Range(ss)) 
     If boo Then 
      MsgBox ss & " has no errors" 
     Else 
      MsgBox ss & " has errors" 
     End If 
    Next ss 
End Sub 

Public Function CheckItNew(r As Range) As Boolean 
    Dim MyText As String 
    MyText = r(1).Text 
    Dim oxlAp As Object 
    Set oxlAp = CreateObject("Excel.Application") 
    CheckItNew = oxlAp.CheckSpelling(MyText) 
    oxlAp.Quit 
    Set oxlAp = Nothing 
End Function 
+0

Ich habe etwas neues gelernt (noch einmal!). Ich würde hinzufügen, dass, da die OP-Umgebung Excel ist, könnte vermieden werden, "CheckItNew" -Funktion und direkt mit "Wenn Application.CheckSpelling (Range (ss) (1) .Text) Then" gehen – user3598756

Verwandte Themen