2013-01-23 50 views
7

Tôi muốn làm cho hàm VBA tùy chỉnh của tôi chỉ chấp nhận đối số một ô. các Rightway để làm việc đó là gì:Excel/VBA: Truyền một ô đơn lẻ làm đối số

  • qua myCell as Cell

hay:

  • qua myRange as Range và nhận được tế bào trái phía trên theo mặc định (như thế nào?)?
+0

Bạn có thể hiển thị các chức năng cũng .. bạn có thể thêm trong 'MyFunction (ByRef myCell như Dải)' như tham số – bonCodigo

+0

Trên thực tế, như thể thường xảy ra, giải pháp đi lên sau khi đặt ra câu hỏi: 'topLeftValue = myRange.Cells (1, 1) .Value' – user776686

+0

là xác nhận câu trả lời sau đây mà bạn đang tìm kiếm? – bonCodigo

Trả lời

14

Nếu bạn chọn nhiều hơn một ô chức năng sẽ thoát:

Function AcceptOneCell(rng As Range) 

If (rng.Cells.Count > 1) Then 
    AcceptOneCell = "Only allow 1 cell" 
    Exit Function 
End If 

    ' your code here 

End Function 
+0

+ 1 cho những gì OP yêu cầu –

+0

vì vậy tôi có thể gọi chức năng này như thế này ----> AcceptOneCell (Cells (1,1)) (sẽ làm việc? – BKSpurgeon

+0

có bạn có thể Cũng tốt để xác định những gì các tế bào (Range) là đến từ: Sheet1.Cells (1,1) ví dụ. – InContext

7

Giả sử người dùng của bạn sẽ bước vào một loạt với nhiều cột và các hàng, bạn có thể làm việc kiểm tra sau để thoát khỏi chức năng nếu đó là những gì bạn có nghĩa là trong câu hỏi ...

Function myFunction(ByRef myCell as Range) as SomeDataType_of_your_choice 
Dim numRow as Long, numCol as Long 

numRow = myCell.Columns.Count 
numCol = myCell.Rows.Count 

If numRow > 1 or numCol > 1 Then 
    MsgBox "Only one cell is accepted" 
    Exit Function  
Else 
    '-- do other stuff you want to do here 
End If 
End Function 
+0

+ 1 để cung cấp cho OP những gì yêu cầu –

0
numRow = myCell.Columns.Count 

numCol = myCell.Rows.Count 

nên được

numColum = myCell.Columns.Count 

numRow = myCell.Rows.Count 
Các vấn đề liên quan