lấy địa chỉ của cell trong bảng tình excel từ code Vba

Liên hệ QC

sonphuong

Thành viên mới
Tham gia
12/5/08
Bài viết
6
Được thích
0
Làm sao để lấy thông tin về "địa chỉ" của chính cell chứa Function tự tạo từ Vba hoặc cell được Function tham chiếu tới (không sữ dụng ActiveCell)
----------------------------------------------
ví dụ :
trong Vba chúng ta đã tạo một Function có tên ID như sau :
Public Function ID (x As String) As String
.........
.........
End Function
---------------------------------------------
trong excel tại ô "A1" ta nhập "=ID(A2)",
yêu cầu kết quả trả về là "A1" hoặc "A2" cũng được. nhưng không được sử dụng hàm ActiveCell vì nếu sữ dụng hàm này thì khi chúng ta copy => paste (nhiều cell cùng một lúc) thì kết quả trả về chỉ là địa chì của cell hiện hành (ActiveCell).
---------------------------------------------
xem ví vụ về ActiveCell :

Public Function ID_Cell(ByRef x As String) As String
ID_Cell = "Row = " & Application.ActiveCell.row & "Column = " & Application.ActiveCell.Column
End Function
---------------------------------------------
ở đây nếu tại ô "A1" ta nhập "=ID_Cell(A2)" rồi chọn (bôi đẹn) từ ô A1 đến ô A2 xong sử dụng tổ hợp phím Ctrl_D. kết quả trả về của hảm ở tất cả các ô chỉ là :"Row = 1Column = 1"
Như vậy là khôg chính xác rồi phải không các bạn?

rất mong ai biết cách giải quết vất đề trên chỉ mình với.
cảm ơn nhiều..
 
Lần chỉnh sửa cuối:
Bạn xem code sau có đúng yêu cầu của bạn không nhé.
PHP:
Public Function ID_Cell(ByRef x As String) As String
    ID_Cell = "Row = " & Application.Range(x).Row & "Column = " & Application.Range(x).Column
End Function
 
Upvote 0
trong excel tại ô "A1" ta nhập "=ID(A2)",
yêu cầu kết quả trả về là "A1" hoặc "A2" cũng được. nhưng không được sử dụng hàm ActiveCell vì nếu sữ dụng hàm này thì khi chúng ta copy => paste (nhiều cell cùng một lúc) thì kết quả trả về chỉ là địa chì của cell hiện hành (ActiveCell).

Đơn giản thế này thui

PHP:
Public Function ID(x As Range) As String
    ID = x.Address
End Function

=> nếu có công thức =ID(A2) -> trả về $A$2

nếu thích bỏ dấu $ bạn tự làm nhé
 
Upvote 0
Bạn xem code sau có đúng yêu cầu của bạn không nhé.
PHP:
Public Function ID_Cell(ByRef x As String) As String
    ID_Cell = "Row = " & Application.Range(x).Row & "Column = " & Application.Range(x).Column
End Function
bạn chưa có "khái niệm" chính xác về code Vba rồi.
Bạn đã sai hai chổ :
- thứ nhất : ở đây "x" là biến chứa giá trị tại cell mà hàm ID_Cell tham chiếu tới.
- thứ hai :
Cấu trúc của Range là : Range(cell1,cell2). đại loại Range sẽ tham chiếu tới một mảng trong bản tính excell hiện hành mà.
---------------------------------------------------------------------------
nhưng dù sao cũng cảm ơn sự qua tâm của bạn.
 
Upvote 0
Tin nhắn song phương gửi cho tôi
Public Function ID(x As Range) As String
ID
= x.
Address
End
Function

---------------------------
còn có cách nào để mình vẫn lấy được địa chỉ cell nhưng bên cạnh đó vẫn lấy được giá trị chứa trong ô hàm Vba tham chiếu tới không. mnình th ủ khai báo hai biến tham chiếu như sau nhưng Vba không hiểu,

Public Function ID(x As string, IDAs Range) As String
ID
= ID.
Address

............' vì "X" mình c òn dùng vào việc lấy giá trị tại ô tham chiếu tới mà
End Function

Lấy cả giá trị và địa chỉ dây
PHP:
Public Function ID(x As Range) As String
  Dim stAdd As String
  Dim Value
  
    stAdd = x.Address
    Value = x.Value
    ' cac CODE khac xu ly stAdd va Value
'.......................
'.......................

    ID = stAdd & " - " & Value
End Function


ID = stAdd & " - " & Value ' chỉ là ví dụ tigertiger thử cho hàm thui nhé

thế nhé
 
Upvote 0
bạn chưa có "khái niệm" chính xác về code Vba rồi.
Bạn đã sai hai chổ :
- thứ nhất : ở đây "x" là biến chứa giá trị tại cell mà hàm ID_Cell tham chiếu tới.
- thứ hai :
Cấu trúc của Range là : Range(cell1,cell2). đại loại Range sẽ tham chiếu tới một mảng trong bản tính excell hiện hành mà.
---------------------------------------------------------------------------
nhưng dù sao cũng cảm ơn sự qua tâm của bạn.
Đúng là tôi mới tập tành về VBA nên khi đọc thì cũng không hiểu rõ lắm mong muốn của bạn. Cụ thể là bạn muốn viết hàm như thế nào. Cái tôi viết là dựa trên cơ sở cái sẵn có của bạn thôi.
Làm sao để lấy thông tin về "địa chỉ" của chính cell chứa Function tự tạo từ Vba hoặc cell được Function tham chiếu tới (không sữ dụng ActiveCell)
....
---------------------------------------------
xem ví vụ về ActiveCell :

Public Function ID_Cell(ByRef x As String) As String
ID_Cell = "Row = " & Application.ActiveCell.row & "Column = " & Application.ActiveCell.Column
End Function
---------------------------------------------
....

rất mong ai biết cách giải quết vất đề trên chỉ mình với.
cảm ơn nhiều..
Nếu như vậy thì cái khai báo biến x As String của bạn là để làm gì? Có bị thừa không? Nếu dùng công thức tôi viết, bạn gõ địa chỉ ô vào trong ngoặc kép. VD: =ID_Cell("A1").
Còn không thì bạn thử xem bài của bác tigertiger xem.
 
Upvote 0
Mã:
Nguyên văn bởi [B]minhlev[/B]
Public Function ID_Cell(ByRef x As String) As String
    ID_Cell = "Row = " & Application.Range(x).Row & "Column = " & Application.Range(x).Column
End Function
Theo mình đoạn code trên chỉ sơ ý chỗ khai báo mà thôi. Chỉnh lại như sau là chạy tốt:
Mã:
Public Function ID_cell(ByRef x As [B]Range[/B]) As String
    ID_cell = "Row=" & x.Row & " Column=" & x.Column
End Function
 
Upvote 0
cảm ơn bác tigertiger
user_online.gif

6th Excel Member
gold.gif
gold.gif
gold.gif
gold.gif
gold.gif
gold.gif

nhiều nha
 
Upvote 0
Nguyên văn bởi minhlev
Đúng là tôi mới tập tành về VBA .......

chính xác là Mới xuống NÚI
 
Upvote 0
Public Function ID_cell(ByRef x As Range) As String
ID_cell = "Row=" & x.Row & " Column=" & x.Column
End Function

Sao lại dùng ByRef x trong trường hợp này?
ByRef chỉ sử dụng khi trả về giá trị. Có lẽ mọi người quên khi nào thì dùng ByRef, khi nào thì dùng ByVal rồi nhỉ :)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom