2010-12-30 33 views
36

Tôi có một chức năng tạo dữ liệu để nói 100 hàng ô (và 2 cột). Đối với mỗi hàng (trong cột thứ 3), tôi cần phải thêm một nút, khi được nhấp, sẽ trả về một hộp thoại tùy chỉnh phương thức cho người dùng 4 tùy chọn/nút để chọn.Làm thế nào để thêm một nút lập trình trong VBA bên cạnh một số dữ liệu ô tấm?

Bất kỳ ý tưởng nào về cách thực hiện việc này?

/T

+0

Kiểm tra: Bạn muốn một cái gì đó giống như một List/ComboBox trong cột thứ ba, nhưng phương thức? –

+0

cả belisarius lẫn Remnant sẽ hoạt động – datatoo

Trả lời

71

Tôi nghĩ rằng đây là đủ để giúp bạn có được trên một con đường đẹp:

Sub a() 
    Dim btn As Button 
    Application.ScreenUpdating = False 
    ActiveSheet.Buttons.Delete 
    Dim t As Range 
    For i = 2 To 6 Step 2 
    Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3)) 
    Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height) 
    With btn 
     .OnAction = "btnS" 
     .Caption = "Btn " & i 
     .Name = "Btn" & i 
    End With 
    Next i 
    Application.ScreenUpdating = True 
End Sub 

Sub btnS() 
MsgBox Application.Caller 
End Sub 

Nó tạo ra các nút và liên kết họ butnS(). Trong btnS() phụ, bạn nên hiển thị hộp thoại của bạn, vv

Mathematica graphics

+0

hoạt động nếu bạn thay đổi 'nhắm mục tiêu thành' t 'và' tLeft 'thành' t.Left ' – datatoo

+0

@datatoo Có, cảm ơn. Đã sửa. –

+0

@belisarius +1 câu trả lời hay :) – Santosh

3

Giả sử hàm của bạn vào dữ liệu trong cột A và B và bạn muốn một UserForm tùy chỉnh để xuất hiện nếu người sử dụng chọn một ô trong cột C. một cách để làm điều này là sử dụng sự kiện SelectionChange:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim clickRng As Range 
    Dim lastRow As Long 

    lastRow = Range("A1").End(xlDown).Row 
    Set clickRng = Range("C1:C" & lastRow) //Dynamically set cells that can be clicked based on data in column A 

    If Not Intersect(Target, clickRng) Is Nothing Then 
     MyUserForm.Show //Launch custom userform 
    End If 

End Sub 

Lưu ý rằng userform sẽ xuất hiện khi người dùng Selects bất kỳ tế bào trong cột C và bạn có thể muốn cư mỗi tế bào trong cột C với một cái gì đó như "chọn ô để khởi chạy biểu mẫu" để làm cho nó rõ ràng rằng người dùng cần phải thực hiện một hành động (có một nút tự nhiên gợi ý rằng nó nên được nhấp)

+0

Tôi thích ý tưởng này! – tobefound

Các vấn đề liên quan