Đố vui về VBA!

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,911
Nhằm cũng cố kiến thức về VBA cho các bạn mới bắt đầu và cả những bạn đang ứng dụng mà chưa hiểu nhiều về nó, tôi mở topic này với mong mõi qua những câu hỏi vui, các bạn sẽ nhận định lại sự hiểu biết cũa mình... (Kễ cã chính tôi cũng đang tập tành nên có rất nhiều cái chưa biết)
Mong rằng topic sẽ mang đến cho các bạn những khám phá thú vị với những cái tưỡng chừng như đã biết
Mong nhận dc bài viết về câu đố cũa các cao thủ! Còn các bạn mới thì đừng ngại khi đưa ra ý kiến cũa mình.. Có sai có sữa sẽ hoàn thiện!
Tôi xin mỡ màn trước bằng 1 câu hỏi đơn giãn
ANH TUẤN

CÂU HỎI 1: Tại sao biến K ko hoạt động?
Tôi muốn khi nhấn vào 1 button thì cell A1 sẽ tăng lên 1 đơn vị... Tôi đã làm như sau:
-Tạo 1 Command Button (nút nhấn thuộc thanh Control Toolbox), click phải chuột lên nút nhấn, chọn View code, rồi gõ vào đoạn code sau:
PHP:
Private Sub CommandButton1_Click()
   K = K + 1
   Range("A1").Value = K
End Sub
Ban đầu K chưa có gì, xem như =0, nhấn nút lần thứ nhất thì K dc tăng thêm 1, vậy K hiện tại sẽ bằng 1, và gán K vào cell A1 thì đương nhiên A1 sẽ =1... Nhấn nút lần 2, K lại dc tăng thêm 1 nên hiện tại K sẽ =2 và cell A1 cũng sẽ =2... vân vân.. từ đó diễn tiến tiếp...
Hi.. hi.. Điều này nghe qua có vẽ rất hợp lý, ấy thế mà khi nhấn nút nó chỉ hoạt động dc duy nhất 1 lần (A1 = 1) rồi thôi ko nhút nhít nữa...
Các bạn có thể giãi thích tại sao lại như thế ko? Tại sao những lần nhấn nút sau đó K lại ko tăng thêm tí nào (vì thực tế A1 vẫn cứ = 1 hoài) ?
ANH TUẤN
 
Tôi có một thủ tục như sau:
PHP:
Sub ViDu()
Dim SoA As Long, SoB As Long, KetQua1 As Long, KetQua2 As Long
'...
KetQua1 = SoA And SoB
KetQua2 = SoA Or SoB
End Sub
Đố các bạn ý nghĩa và nguyên tắc tính của KetQua1 và KetQua2
Cách tính: biểu diễn 2 số dưới dạng nhị phân rồi làm phép toán trên từng cặp bit của 2 số. Ví dụ 5 (101 binary) and 3 (11 binary) = 1.
Ý nghĩa: dùng để lưu thông tin của nhiều biến boolean (mỗi biến này thường gọi là các cờ - flag) vào 1 biến long duy nhất. Sau đó các phép toán and, or, xor sẽ được dùng để thao tác trên các cờ này. Ví dụ biến A lưu thông tin về các cờ, biến B thường gọi là mặt nạ(mask), mình ví dụ A và B có 3 bit (thực tế là 32 bit). Khi muốn xóa 1 cờ (ví dụ cờ số 2 đang là 1 hoặc 0 trở thành 0) và giữ nguyên các cờ khác, ta dùng A and 5 (101 binary); để đặt 1 cờ thành 1 (ví dụ cờ số 2), ta dùng A or 2 (010 binary); để đảo cờ số 2 (1 thành 0, 0 thành 1) ta dùng A xor 2 (010 binay).
Mình cũng không rõ vba có XOR không vì viết bằng điện thoại.
 
Upvote 0
Rảnh rỗi sinh nông nỗi, tôi đố các bạn thủ tục nào, câu lệnh nào để ngăn không cho thông báo có lưu file hay không?

Ứng dụng: Một file mà ta chỉ cần thực hiện cái mình cần thiết (in ấn, xuất biểu mẫu ra file khác, v.v...), nhưng không muốn lưu lại cho file đó, khi thoát file thường xuất hiện thông báo (hình), nên việc không cho thông báo khi thoát file là "không cần đắn đo".

Vậy bằng cách nào?
 

File đính kèm

  • ThongBao.jpg
    ThongBao.jpg
    20.1 KB · Đọc: 39
Lần chỉnh sửa cuối:
Upvote 0
Rảnh rỗi sinh nông nỗi, tôi đố các bạn thủ tục, sự kiện nào để ngăn không cho thông báo có lưu file hay không?

Ứng dụng: Một file mà ta chỉ cần thực hiện cái mình cần thiết (in ấn, xuất biểu mẫu ra file khác, v.v...), nhưng không muốn lưu lại cho file đó, khi thoát file thường xuất hiện thông báo (hình), nên việc không cho thông báo khi thoát file là "không cần đắn đo".

Vậy bằng cách nào?
giờ mấy giờ rồi anh Nghĩa ? lêu lêu
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Close False
End Sub
 
Upvote 0
Rảnh rỗi sinh nông nỗi, tôi đố các bạn thủ tục nào, câu lệnh nào để ngăn không cho thông báo có lưu file hay không?

Ứng dụng: Một file mà ta chỉ cần thực hiện cái mình cần thiết (in ấn, xuất biểu mẫu ra file khác, v.v...), nhưng không muốn lưu lại cho file đó, khi thoát file thường xuất hiện thông báo (hình), nên việc không cho thông báo khi thoát file là "không cần đắn đo".

Vậy bằng cách nào?
Mã:
[COLOR=#00008B]Sub[/COLOR][COLOR=#000000] Workbook_BeforeSave[/COLOR][COLOR=#000000]([/COLOR][COLOR=#00008B]ByVal[/COLOR][COLOR=#000000] SaveAsUI [/COLOR][COLOR=#00008B]As[/COLOR][COLOR=#00008B]Boolean[/COLOR][COLOR=#000000],[/COLOR][COLOR=#000000] Cancel [/COLOR][COLOR=#00008B]As[/COLOR][COLOR=#00008B]Boolean[/COLOR][COLOR=#000000])[/COLOR][COLOR=#000000]
    MsgBox [/COLOR][COLOR=#800000]"You can't save this workbook!"[/COLOR][COLOR=#000000]
    Cancel [/COLOR][COLOR=#000000]=[/COLOR][COLOR=#800000]True[/COLOR][COLOR=#000000]
[/COLOR][COLOR=#00008B]End [/COLOR][COLOR=#00008B]Sub[/COLOR]
 
Lần chỉnh sửa cuối:
Upvote 0

File đính kèm

  • KhoQua.jpg
    KhoQua.jpg
    18.9 KB · Đọc: 40
Upvote 0
Mã:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI AsBoolean, Cancel As Boolean)

    MsgBox "You can't save this workbook!"
    Cancel =True

End Sub

Khổ quá, có đụng chạm gì đến nút Save đâu mà sự kiện này được kích hoạt! Đã ngăn không cho Save bấm vào nó làm gì nè!
 
Upvote 0
Trong Video có thây Close gì đâu? Còn vụ Recover là sao ta?-+*/
không nhìn thấy Close thì cần xem video 0:28 -> 0:32 vặn xem ở tốc độ thấp nhất
===================================
mà xem cái này dài hơn tí nè
[video=youtube;-L6RZfqzeRM]https://www.youtube.com/watch?v=-L6RZfqzeRM&feature=youtu.be[/video]
 
Lần chỉnh sửa cuối:
Upvote 0
không nhìn thấy Close thì cần xem video 0:28 -> 0:32 vặn xem ở tốc độ thấp nhất
===================================
mà xem cái này dài hơn tí nè

Kakakakak, cái này được đó, nhưng để nhiều người tham gia chơi cho vui rồi đồng chí thử đưa câu trả lời!

(Cũng nhiều người vào xem mà chưa có quan tâm hen: VetMini, mhung12005, concogia, HungQuoc49, hpkhuong, VMH0307, moneymong.pt, khuongvietphong, tvpnet1983, quanghai1969, befaint)

[video=youtube;OmEKaSX79a4]https://www.youtube.com/watch?v=OmEKaSX79a4&feature=youtu.be[/video]
 
Lần chỉnh sửa cuối:
Upvote 0
Kakakakak, cái này được đó, nhưng để nhiều người tham gia chơi cho vui rồi đồng chí thử đưa câu trả lời!

[video=youtube;OmEKaSX79a4]https://www.youtube.com/watch?v=OmEKaSX79a4&feature=youtu.be[/video]

anh tham gia diễn đàn lâu hơn tôi mà , anh phải biết muốn có nhiều người tham gia chơi vui là phải nghĩ ra câu hỏi cực xoáy cực độc mới được .....
 
Upvote 0
anh tham gia diễn đàn lâu hơn tôi mà , anh phải biết muốn có nhiều người tham gia chơi vui là phải nghĩ ra câu hỏi cực xoáy cực độc mới được .....
Ủa, đố vui mà, ngắn gọn và hiệu quả, nhưng cũng bất ngờ, ở diễn đàn bây giờ, tìm được câu đố mà chưa có trong diễn là hiếm đó, thử hỏi cái gì mà không có trên diễn đàn này? Hầu như về lập trình cho Excel đều có hết đáp án rồi!

Khó khăn lắm tôi mới tìm được một đề tài vừa tầm để đố, chứ thư viện API mà đem vào đố chắc biết mấy ai tham gia?
 
Upvote 0
Mấy bác này làm những chuyện siêu nhân gao quá mình không hiểu lý do tại sao lại được nhỉ.
 
Upvote 0
Mấy bác này làm những chuyện siêu nhân gao quá mình không hiểu lý do tại sao lại được nhỉ.
link MS
https://support.microsoft.com/en-us/kb/213428
In Microsoft Excel, you can create a Microsoft Visual Basic for Applications (VBA) macro that suppresses the "Save Changes" prompt when you close a workbook. You can do this either by specifying the state of the workbook's Saved property or by suppressing all alerts for the workbook.
 
Upvote 0
Thử Google
Mã:
".Close False" site:www.giaiphapexcel.com
xem có bao nhiêu kết quả và cũ nhất là khi nào.
 
Upvote 0
Web KT

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

Back
Top Bottom