In diesem Artikel erfahren Sie, wie Sie Daten aus einer externen Arbeitsmappe in der aktiven Arbeitsmappe basierend auf bestimmten definierten Bedingungen abrufen.

In diesem Beispiel möchten wir Gelddetails für eine bestimmte Person basierend auf dem Namen und der Art der Bankkategorie abrufen. Gelddetails werden in der Arbeitsmappe „Datendatei“ gespeichert.

DataFile

In diesem Beispiel haben wir die VBA-Prozedur „ReadFormatting“ geschrieben, die die Gelddetails zusammen mit dem Formatstil zurückgibt.

Logische Erklärung

Die Prozedur „ReadFormatting“ verwendet das Bereichsobjekt als Eingabe und gibt die Ausgabe in der Zelle neben dem definierten Bereichsobjekt zurück.

Es überprüft den definierten Wert im Bereich in der ersten Zeile der Arbeitsmappe „Datendatei“ und ermittelt die Spaltennummer. Es überprüft den Wert der Zelle der vorherigen Spalte des definierten Bereichs in der ersten Spalte der Arbeitsmappe „Datendatei“ und ermittelt die Zeilennummer.

Nachdem die Spaltennummer und die Zeilennummer der möglichen Übereinstimmung gefunden wurden, wird der Wert der Zelle mit der gefundenen Spaltennummer und Zeilennummer zusammen mit dem Formatstil zurückgegeben.

Die Prozedur „ReadFormatting“ kann mithilfe einer anderen Prozedur oder eines anderen Ereignisses ausgeführt werden.

Wir werden die Prozedur „ReadFormatting“ auf zwei Arten ausführen: -. Verfahren verwenden. Verwenden des Arbeitsblattänderungsereignisses

Verwenden der Prozedur

Wir haben die Prozedur „CallingProcedure“ zum Aufrufen der Prozedur „ReadFormatting“ mit Zelle N13 als Bereichsobjekt verwendet. Es überprüft den Wert in Zelle N13 in der ersten Zeile der externen Arbeitsmappe, um die Spaltennummer zu ermitteln, und den Wert in Zelle M13 in der ersten Spalte der externen Arbeitsmappe, um die Zeilennummer zu ermitteln. Nachdem Sie die Spalten- und Zeilennummer gefunden haben, wird der Wert zusammen mit dem Formatstil zurückgegeben.

ArrowRunningMacro

Arbeitsblattänderungsereignis verwenden

Führen Sie die folgenden Schritte aus, um ein Arbeitsblattänderungsereignis hinzuzufügen: -. Klicken Sie im Visual Basic-Editor auf den Blattnamen, um das Blattmodul zu aktivieren.

ArrowWritingWorksheetEvent

  1. Klicken Sie auf das Arbeitsblatt im linken Kombinationsfeld oben im Codefenster.

ArrowWorksheetChangeEvent

  1. Klicken Sie auf die Änderung im rechten Kombinationsfeld oben im Codefenster.

Wir haben das Arbeitsblattänderungsereignis zum Ausführen der Prozedur verwendet. Das Arbeitsblattänderungsereignis wird ausgelöst, wenn der Wert einer Zelle in der Arbeitsmappe geändert wird. Mit der IF-Anweisung haben wir das Änderungsereignis so eingeschränkt, dass es nur ausgelöst wird, wenn der Wert in der Zelle der Spalte I geändert wird. Die Zelle, deren Wert geändert wird, dient als Eingabe für die Prozedur „ReadFormatting“.

Bitte folgen Sie unten für den Code

Option Explicit

Sub CallingProcedure()

'Calling procedure ReadFormatting for cell N13

Call ReadFormatting(Range("N13"))



End Sub

Sub ReadFormatting(rng As Range)

Dim varRow, varCol As Long

Application.ScreenUpdating = False

'Activating workbook "Data file.xlsx"

Workbooks("Data file.xlsx").Activate

'Checking for Errors

'If any runtime error occur then it will the pointer to end of the procedure

On Error GoTo Last

'Finding the column no after matching rng value in the first row of "Data file.xlsx" workbook

varRow = Application.Match(rng.Value, Rows(1), 0)

'Offset method is used for moving one cell in the previous column

'Finding the row no after matching value of cell in the first column of "Data file.xlsx" workbook

varCol = Application.Match(rng.Offset(0, -1).Value, Columns(1), 0)

'Using If statement for checking errors

'If error not found in varRow and varCol then execute below code

If Not IsError(varRow) And Not IsError(varCol) Then

'Copying value of cell where match of row and column intersect

Cells(varCol, varRow).Copy



'Pasting the format of copied cell

rng.Offset(0, 1).PasteSpecial xlPasteFormats



'Pasting the value of copied cell

rng.Offset(0, 1).PasteSpecial xlPasteValues



'Unselecting the previous copied data and clearing the cache

Application.CutCopyMode = False



End If

Application.ScreenUpdating = True

Last:

Workbooks("Searching_And_Getting_Data_From_Other_File_Along_With_Formatting.xlsm").Activate



End Sub

Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook und Facebook.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]