Ich benutze VBA, um eine Liste von Referenznummern ROID durchlaufen und geben Sie den richtigen vollen Namen (ROIDA) von einer separaten Seite. Die Seite, auf der vollständige Name befindet hat die Referenznummer in der Spalte D und den vollständigen Namen in Spalte AObjektorientierter Fehler - Verweise auf andere Arbeitsblätter?
Sub Main()
'Set variable types
Dim WorksheetA As Excel.Worksheet
Dim WorksheetB As Excel.Worksheet
Dim ROID As Range, ROIDA As Range
Set WorksheetA = ActiveWorkbook.Sheets("WorksheetA")
Set WorksheetB = ActiveWorkbook.Sheets("Approval Flows")
'Replacing ROID #s with full Name
'Define range of active requesting offices
Set ROID = WorksheetA.Range(Range("A7"), Range("A7").End(xlDown))
'Define range of attention lines and associated ROIDs
Set ROIDA = WorksheetB.Range(Range("D7"), Range("D7").End(xlDown))
'Loop through ROIDs and replace with ATTN line
For Each ID In ROID
Set Match = ROIDA.Find(ID)
If Not Match Is Nothing Then
ID = Match.Offset(0, -3)
End If
Next ID
End Sub
Wenn ich versuche, um das Skript auszuführen, habe ich einen objektorientierten Fehler von dieser Linie erhalten:
Set ROIDA = WorksheetB.Range(Range("D7"), Range("D7").End(xlDown))
Ist dies, weil ich mit mehreren Blättern arbeite? Ich bemühe mich sehr, die Aktivierungs- oder Auswahlfunktionen nicht zu verwenden.
Sind Sie sicher, dass der Fehler nicht "Objekt ** erforderlich **" ist? –
Sie scheinen eine Anzahl nicht deklarierter Variablen zu verwenden. Stellen Sie sicher, dass Sie "Option Explicit" oben im Modul angeben und alle Variablen deklarieren. Dann qualifizieren Sie 'Range' Anrufe. Uneingeschränkter 'Range' Anrufe implizit auf das aktive Blatt verweisen, die auf jeden Fall nicht das, was Sie beabsichtigen, hier zu tun. wollen könnte diesen Code durch [Rubber Inspektionen] (http://rubberduckvba.com/inspections/list) ausführen können, finden Sie eine Reihe von [Implizite actvie Blattbezug] (siehe http://rubberduckvba.com/inspections/Details /ImplicitActiveSheetReferenceInspection) Ergebnisse. –
@ Mat'sMug - das ist ziemlich raffiniert. – SJR