Cách tạo ra nút lệnh. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

trunglee123

Thành viên chính thức
Tham gia
20/9/12
Bài viết
64
Được thích
2
Ai có thể giúp mình tạo ra nút lệnh lúc mình viết 1 đoạn code xong chỉ cần bên excel nhấp vào là chạy được không?? tkhs
 
Bạn xài excel gì vậy? 2003 hay 2007?

Với nút lệnh ta có thể tạo bằng nhiều cách

1) Lấy nút lệnh từ Form

2) Lấy nút lệnh từ Control Toolbox

3) Tạo một shape và gán macro.
 
Upvote 0
Bạn xài excel gì vậy? 2003 hay 2007?

Với nút lệnh ta có thể tạo bằng nhiều cách

1) Lấy nút lệnh từ Form

2) Lấy nút lệnh từ Control Toolbox

3) Tạo một shape và gán macro.

MÌnh đang dùng excel 2010. Bạn chỉ thể chỉ rõ từng bước không, lúc mình dùng một đoạn mã lệnh thì nhấn ctl+.. bất tiện quá.
 
Upvote 0
MÌnh đang dùng excel 2010. Bạn chỉ thể chỉ rõ từng bước không, lúc mình dùng một đoạn mã lệnh thì nhấn ctl+.. bất tiện quá.

Với XL2007 hay XL2010 thì bạn chọn vào Excel Options... tại mục Popular bạn check vào mục Show Developer tab in the Ribbon rồi OK

Với tab Developer này trên Ribbon, bạn sẽ thấy nút Insert, bạn bấm vào đây sẽ có 2 phần: Form Control và ActiveX Controls.

1) Chọn 1 nút lệnh trên Form Control bạn sẽ được 1 hộp thoại yêu cầu bạn chọn một macro để gán vào nút lệnh.

2) Chọn 1 nút lệnh trên ActiveX Control, bạn double click vào nó sẽ được cấu trúc trong sheet VBA:

PHP:
Private Sub CommandButton1_Click()

End Sub

Bạn sẽ gõ câu lệnh vào giữa Private Sub và End Sub hoặc bạn đặt một tên macro vào trong đó.

3) Bạn insert một shape, cũng như 1) bạn chuột phải và chọn vào Assign Macro...

Nói tới đây, hy vọng bạn đã làm được!
 
Upvote 0
Cho mình hỏi lúc mình viết 1 đoạn code như sau:
Private Sub Cmb1_click()
num=range("sheet1!A1").value
Range("sheet1!A1:A100").clear
kq = 1
For i = 1 to num
kq = kq * i
range("sheet1!A1").Ofset(i,0).value = kq
next i
range("sheet1!B1").value = kq
end sub
thì cell B1 chỉ hiện ra số 1 là sao??.và cho mình hỏi khi nhập lệnh A1:A100 có ý nghĩa gì không?
 
Upvote 0
Cho mình hỏi lúc mình viết 1 đoạn code như sau:
Private Sub Cmb1_click()
num=range("sheet1!A1").value
Range("sheet1!A1:A100").clear
kq = 1
For i = 1 to num
kq = kq * i
range("sheet1!A1").Ofset(i,0).value = kq
next i
range("sheet1!B1").value = kq
end sub
thì cell B1 chỉ hiện ra số 1 là sao??.và cho mình hỏi khi nhập lệnh A1:A100 có ý nghĩa gì không?

Trước tiên, nhìn vào code, bạn viết sai thủ tục Offset (phải có 2 chữ f).

Bắt đầu với biến num, biến này nhận giá trị tại ô A1, bao nhiêu thì ta cứ gõ vào ô đó nó sẽ nhận bấy nhiêu, nhớ là phải nhập số nguyên dương, chuỗi là phát sinh lỗi.

Range("sheet1!A1:A100").clear đây là thủ tục xóa (tất cả kể cả định dạng) khối ô A1:A100, như vậy có thể hiểu rằng giá trị nhập vô ô A1 từ 0-99. Vì sao phải xóa trước khi chạy code? Bởi tùy theo giá trị nhập vào tại ô A1, nếu như ta nhập 20 lần đầu thì ta đã chạy được 20 dòng cột A, nhưng lần sau ta chạy 10 dòng thì 10 dòng đầu có giá trị của lần chạy này, 10 dòng kế tiếp là của lần chạy trước, vì thế ta phải xóa trước khi chạy code để tránh nhầm lẫn dữ liệu của những lần chạy sau.
Ý nghĩa của Offset(i, 0) hay Offset(i) là sau mỗi vòng lặp là nó xuống hàng i lần cho đến khi i = kq.

Với num giả sử ta gõ 5 tại A1 thì num mang giá trị là 5. Khi lặp đúng 5 lần thì kq lúc này đã mang giá trị lên đến 120 thì dòng cuối cùng khi lặp là A6 sẽ mang giá trị 120 là hết thủ tục lặp. Lúc này kq vẫn mang giá trị là 120 cho nên gặp thủ tục range("sheet1!B1").value = kq đương nhiên ô B1 sẽ mang giá trị là 120.

Tại sao B1 bạn chỉ nhận giá trị là 1 có nghĩa rằng tại ô A1 của bạn chẳng gõ gì vào đó cả hoặc chỉ gõ số 0 thôi nên vòng lặp chỉ chạy đúng 1 lần mà ban đầu đã định kq=1 nên 1*1 chỉ có bằng 1 thì kết quả tại ô B1 là 1 là đúng rồi còn gì!

Từ từ bạn sẽ hiểu nhiều vấn đề về VBA. Đau đầu nhưng cũng đầy thú vị!
 
Upvote 0
Web KT

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

Back
Top Bottom