Suchen und Abrufen des Werts von einem externen Arbeitsmappe basierend auf bestimmten Zustand und Einfügen Wert zusammen mit Format Stil mit VBA in Microsoft Excel.
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.
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.
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.
-
Klicken Sie auf das Arbeitsblatt im linken Kombinationsfeld oben im Codefenster.
-
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]