Ricerca e ottenere valore dalla cartella di lavoro esterno in base a determinate condizioni e incollando il valore insieme con stile formato utilizzando VBA in Microsoft Excel.
In questo articolo, impareremo come ottenere dati dalla cartella di lavoro esterna nella cartella di lavoro attiva in base a determinate condizioni definite.
In questo esempio, vogliamo ottenere i dettagli del denaro per una determinata persona in base al nome e al tipo di categoria di banca. I dettagli del denaro vengono memorizzati nella cartella di lavoro “File di dati”.
In questo esempio, abbiamo scritto la procedura VBA “ReadFormatting” che restituisce i dettagli del denaro insieme allo stile del formato.
Spiegazione logica
La procedura “ReadFormatting” accetta l’oggetto intervallo come input e restituisce l’output nella cella accanto all’oggetto intervallo definito.
Controlla il valore definito nell’intervallo all’interno della prima riga della cartella di lavoro “File di dati” e trova il numero di colonna. Controlla il valore della cella della colonna precedente dell’intervallo definito all’interno della prima colonna della cartella di lavoro “File di dati” e trova il numero di riga.
Dopo aver trovato il numero di colonna e il numero di riga della possibile corrispondenza, viene restituito il valore della cella con il numero di colonna trovato e il numero di riga insieme allo stile di formato.
La procedura “ReadFormatting” può essere eseguita utilizzando un’altra procedura o evento.
Eseguiremo la procedura “ReadFormatting” in due modi: -. Utilizzo della procedura. Utilizzo dell’evento di modifica del foglio di lavoro
Utilizzo della procedura
Abbiamo utilizzato la procedura “CallingProcedure” per chiamare la procedura “ReadFormatting” con la cella N13 come oggetto range. Controllerà il valore nella cella N13 nella prima riga della cartella di lavoro esterna per trovare il numero di colonna e controllerà il valore nella cella M13 nella prima colonna della cartella di lavoro esterna per trovare il numero di riga. Dopo aver trovato il numero di colonna e il numero di riga, restituirà il valore insieme allo stile di formato.
Utilizzo dell’evento di modifica del foglio di lavoro
Per aggiungere un evento di modifica del foglio di lavoro, attenersi alla seguente procedura: -. Fare clic sul nome del foglio in Visual Basic Editor per attivare il modulo del foglio.
-
Fare clic sul foglio di lavoro nella casella combinata a sinistra nella parte superiore della finestra del codice.
-
Fare clic sulla modifica nella casella combinata a destra nella parte superiore della finestra del codice.
Abbiamo utilizzato l’evento di modifica del foglio di lavoro per eseguire la procedura. L’evento di modifica del foglio di lavoro viene generato quando viene modificato il valore di qualsiasi cella nella cartella di lavoro. Utilizzando l’istruzione IF, abbiamo limitato l’evento di modifica da attivare solo quando il valore nella cella della colonna I. viene modificato. La cella il cui valore viene modificato, funge da input per la procedura “ReadFormatting”.
Segui sotto per il codice
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
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.
Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]