Trong bài viết này, chúng ta sẽ tìm hiểu cách lấy dữ liệu từ sổ làm việc bên ngoài trong sổ làm việc đang hoạt động dựa trên một số điều kiện đã xác định.

Trong ví dụ này, chúng tôi muốn biết thông tin chi tiết về tiền cho một người cụ thể dựa trên tên và loại ngân hàng. Chi tiết tiền được lưu trữ trong sổ làm việc “Tệp dữ liệu”.

DataFile

Trong ví dụ này, chúng tôi đã viết thủ tục VBA “ReadFormatting” trả về chi tiết tiền cùng với kiểu định dạng.

Giải thích logic

Thủ tục “ReadFormatting” lấy đối tượng phạm vi làm đầu vào và trả về đầu ra trong ô bên cạnh đối tượng phạm vi đã xác định.

Nó kiểm tra giá trị đã xác định trong phạm vi trong hàng đầu tiên của sổ làm việc “Tệp dữ liệu” và tìm số cột. Nó kiểm tra giá trị của ô của cột trước đó của phạm vi đã xác định trong cột đầu tiên của sổ làm việc “Tệp dữ liệu” và tìm số hàng.

Sau khi tìm thấy số cột và số hàng có thể khớp, giá trị của ô có số cột và số hàng đã tìm được sẽ được trả về cùng với kiểu định dạng.

Thủ tục “ReadFormatting” có thể được chạy bằng cách sử dụng thủ tục hoặc sự kiện khác.

Chúng tôi sẽ chạy thủ tục “ReadFormatting” theo hai cách: -. Quy trình sử dụng. Sử dụng sự kiện thay đổi trang tính

Quy trình sử dụng

Chúng tôi đã sử dụng thủ tục “Gọi điện theo quy trình” để gọi thủ tục “Định dạng đọc” với ô N13 là đối tượng phạm vi. Nó sẽ kiểm tra giá trị trong ô N13 trong hàng đầu tiên của sổ làm việc bên ngoài để tìm số cột và kiểm tra giá trị trong ô M13 trong cột đầu tiên của sổ làm việc bên ngoài để tìm số hàng. Sau khi tìm thấy số cột và số hàng, nó sẽ trả về giá trị cùng với kiểu định dạng.

ArrowRunningMacro

Sử dụng sự kiện thay đổi trang tính

Để thêm sự kiện thay đổi trang tính, hãy làm theo các bước sau: -. Bấm vào tên trang tính trong Visual Basic Editor, để kích hoạt mô-đun trang tính.

ArrowWritingWorksheetEvent

  1. Bấm vào trang tính trong hộp tổ hợp bên trái trên đầu cửa sổ mã.

ArrowWorksheetChangeEvent

  1. Nhấp vào thay đổi trong hộp kết hợp bên phải trên đầu cửa sổ mã.

Chúng tôi đã sử dụng sự kiện thay đổi trang tính để chạy thủ tục. Sự kiện thay đổi trang tính được kích hoạt khi giá trị của bất kỳ ô nào trong sổ làm việc bị thay đổi. Sử dụng câu lệnh IF, chúng tôi đã hạn chế sự kiện thay đổi chỉ được kích hoạt khi giá trị trong ô của cột I bị thay đổi. Ô có giá trị bị thay đổi, đóng vai trò là đầu vào cho thủ tục “ReadFormatting”.

Vui lòng theo dõi bên dưới để biết mã

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

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]