Chỉ tham chiếu ô theo tên cột trong Excel 2010 VBA


2

Trong Excel 2010, tôi cần đi qua một hàng bảng dữ liệu theo từng hàng và thao tác dữ liệu trong VBA.

Hàm ban đầu của tôi đọc như thế này:

Private Function GetValue(ByVal myRange As Excel.Range, ByVal strCol As String) As String
    Dim myCell As Object
    Set myCell = myRange.Cells(, strCol) 
    GetValue = myCell.Value 
End Function

Tôi gọi nó như thế này:

GetValue(myRow, "AE")  

myRow là một Excel.Range đại diện cho một hàng.
"AE" là chỉ số cột.

Tôi muốn chuyển đổi để sử dụng tên cột thay vì chỉ mục cột vì người dùng có thể chọn thêm hoặc xóa cột trong tương lai. Tôi đã xác định một phạm vi ô dưới dạng bảng trong Excel, đặt tên bảng và chọn tên cột duy nhất.

Điều này có nghĩa là bây giờ tôi sẽ gọi hàm bằng cách sử dụng:

GetValue(myRow, "column_name")

nhưng tôi không thể tìm thấy các ví dụ trong đó tôi chỉ có thể chỉ định tên cột mà không chỉ định hàng.

Điều này thậm chí còn khả thi?


Nếu bạn không muốn chỉ định hàng, Excel / VBA sẽ biết hàng bạn đang cố thao tác như thế nào?
misha256

Bởi vì tôi chuyển hàng dưới dạng tham số cho hàm.
chabzjo

Câu trả lời:


3

Mật mã từ câu trả lời khác không biên dịch cho tôi, nhưng nó cho phép tôi thực hiện một số nghiên cứu sâu hơn.

Lấy cảm hứng từ Làm cách nào để lặp một bảng excel 2010 bằng cách sử dụng tên của anh ấy & amp; cột tham khảo? Làm thế nào để lặp qua bảng và truy cập các mục hàng bằng tiêu đề cột của chúng? , Tôi đã kết thúc bằng cách sử dụng:

Private Function GetValue(ByVal myRange As Excel.Range, ByVal strCol As String) As String
    GetValue = myRange.Columns(myRange.ListObject.ListColumns(strCol).Range.Column).Value
End Function

1

Xem xét:

Public Function GetValue2(ByVal myRow As Long, ByVal strColumnName As String) As String
    Dim myCell As Object

    Set myCell = Cells(myRow, Range(strColumnName).Column)
    GetValue2 = myCell.Value
End Function

Trong ví dụ này, tôi "đặt tên" cột B "qwerty"

enter image description here

Xin lưu ý rằng sẽ có tiềm năng biến động vấn đề với chức năng này.


Bạn có thể giải thích những gì bạn có ý nghĩa bởi các vấn đề biến động?
chabzjo

Ý tôi là nếu bạn thay đổi nội dung của cột B, chức năng không đủ thông minh để biết cần phải tính toán lại chính nó.
Gary's Student

Trên thực tế, có chức năng biết là cần thiết để tính toán lại không phải là một phần của yêu cầu của tôi. Nhưng cảm ơn vì đã suy nghĩ trước. :)
chabzjo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.