Toạ độ X, Y của Cell được lựa chọn

Liên hệ QC

hiphoang.prodixetho

Thành viên mới
Tham gia
1/11/11
Bài viết
36
Được thích
2
Các Pro cho em hỏi làm thế nào để xác định toạ độ ( X, Y) của cell đang được lựa chọn vậy? ( như trong hình)
 

File đính kèm

  • Tọa độ Cell.png
    Tọa độ Cell.png
    4 KB · Đọc: 68
Đơn giản thôi bạn:
PHP:
Sub test()
MsgBox "toa do X: " & Selection.Column & " toa do Y: " & Selection.Row
End Sub
 
Upvote 0
Ý mình ko phải là tên của Cell( Dòng và Cột) mà là tọa độ trong Win mà Cậu!
 
Upvote 0
Ý mình ko phải là tên của Cell( Dòng và Cột) mà là tọa độ trong Win mà Cậu!
Tôi không chắc code dưới đây có chính xác không, tuy nhiên bạn cứ thí nghiệm
PHP:
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
PHP:
Function CellPosition(Optional rCell As Range)
  Dim PointsPerPixelX As Double, PointsPerPixelY As Double
  Dim x As Long, y As Long
  Dim rng As Range, bFound As Boolean, Arr(1 To 2)
  Application.Volatile
  If rCell Is Nothing Then Set rCell = ActiveCell
  Set rCell = rCell(1, 1)
  PointsPerPixelX = 72 / GetDeviceCaps(GetDC(0), 88)
  PointsPerPixelY = 72 / GetDeviceCaps(GetDC(0), 90)
  ReleaseDC 0, GetDC(0)
  For x = Int(Application.Left / PointsPerPixelX) To Int(Application.Left / PointsPerPixelX + Application.Width / PointsPerPixelX)
    For y = Int(Application.Top / PointsPerPixelY) To Int(Application.Top / PointsPerPixelY + Application.Height / PointsPerPixelY)
      Set rng = Application.Windows(1).RangeFromPoint(x, y)
      If Not (rng Is Nothing) Then
        bFound = True
        Exit For
      End If
    Next
    If bFound Then Exit For
  Next
  Arr(1) = x * PointsPerPixelX + (rCell.Left - rng.Left)
  Arr(2) = y * PointsPerPixelY + (rCell.Top - rng.Top)
  CellPosition = Arr
End Function
Áp dụng:
- Tại 1 cell nào đó, bạn gõ công thức =CellPosition(rCell) sẽ cho kết quả vị trí Left, Top của rCell (rCell là 1 cell bất kỳ)
- Nếu bỏ qua biến rCell thì mặc định sẽ xem như tính ActiveCell
- Đây là hàm mảng, vì thế để xem được cả 2 giá trị Left, Top, bạn phải bôi đen công thức trên thanh Formula rồi bấm F9... Hoặc giả bạn có thể bôi đen 2 cell theo chiều ngang (ví dụ bôi đen C5:D5), gõ công thức vào thanh Formula rồi bấm tổ hợp phím Ctrl + Shift + Enter
- Khi có thay đổi vị trí của Window cũng như vị trí cell, để cập nhật kết quả, bấm F9
---------------------------
Hỏi bạn chút: Bạn cần biết tọa độ của cell để làm gì?
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cám ơn Sư phụndu96081631 !
À em làm một cái Popup Form và có các list chọn dữ liệu khi click vào cell nên mới cần cái tọa đô X, Y để xác định vị trí của Popup Form ấy mà!
hì hì hì

Em là dân Công Trình nên tự mày mò học cái gì ko biết thì toàn lên đây hỏi các Pro. hì
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Cám ơn Sư phụndu96081631 !
À em làm một cái Popup Form và có các list chọn dữ liệu khi click vào cell nên mới cần cái tọa đô X, Y để xác định vị trí của Popup Form ấy mà!
hì hì hì
Bạn nói luôn ngay từ đầu có phải dễ trợ giúp không?
Để Form hiện đúng vị trí ActiveCell thì phải chỉnh lại code nhiều đấy
Tặng bạn file mẫu đây
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom