Đố 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
 
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.
Trả lời đáp án luôn nè huuthang_bd:

Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
[COLOR=#ff0000][B]    ThisWorkbook.Saved = [/B][/COLOR][COLOR=#0000ff][B]True[/B][/COLOR]
End Sub
 
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.
Ngày 15/10/2008: Ngăn chặn các nhắc nhở không cần thiết

Chiêu thứ 4: Ngăn chặn các nhắc nhở không cần thiết

Hoặc, nếu bạn cần các hàm volatile nhưng không muốn Excel lưu lại các thay đổi không nhìn thấy này bạn có thể thêm đoạn code sau vào Workbook module của Personal Macro Workbook để đánh lừa nó là bảng tính đã được lưu rồi.

PHP:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Me.Saved = True
  End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bởi vậy mới nói:

Ủ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?

Mình tham gia tháng 8/2008, bài đó nó chỉ có sau chừng 2 tháng! Nếu mà lúc đó mình biết VBA chắc mình bây giờ cũng chết tiệt lắm đây!

P/s: Thiết nghĩ khi đã có câu lệnh rồi thì search trên diễn đàn có nhiều, nhưng để mà nhớ cũng chưa chắc ai đã nhớ để trả lời à!
 
Lần chỉnh sửa cuối:
Upvote 0
làm sao tắt DropDownList của Combobox ?

chào các bạn GPE , nhân dịp cuối tuần mời các bạn giải trí với câu đố dễ sau đây
khi cần hiện ra List của Combobox ta dùng
Mã:
ComboBox1.DropDown
vậy khi cần tắt cái DropDownList này mà không làm mất Text hiện tại trên Combobox thì ta làm sao đây ? xin mời các bạn
Chúc cuối tuần vui vẽ và đừng bỏ lỡ Siêu kinh điển vào 0h00 đêm nay
 

File đính kèm

  • New Microsoft Excel Worksheet.xlsb
    19.8 KB · Đọc: 12
Upvote 0
chào các bạn GPE , nhân dịp cuối tuần mời các bạn giải trí với câu đố dễ sau đây
khi cần hiện ra List của Combobox ta dùng
Mã:
ComboBox1.DropDown
vậy khi cần tắt cái DropDownList này mà không làm mất Text hiện tại trên Combobox thì ta làm sao đây ? xin mời các bạn
Chúc cuối tuần vui vẽ và đừng bỏ lỡ Siêu kinh điển vào 0h00 đêm nay
Làm vầy được không
PHP:
 If KeyCode <> 27 Then Application.SendKeys "{ESC}"
 
Upvote 0
Làm vầy được không
PHP:
 If KeyCode <> 27 Then Application.SendKeys "{ESC}"

bấm zô cái nó mất hết text của Combobox . Hic

chào các bạn GPE , nhân dịp cuối tuần mời các bạn giải trí với câu đố dễ sau đây
khi cần hiện ra List của Combobox ta dùng
Mã:
ComboBox1.DropDown
vậy khi cần tắt cái DropDownList này mà không làm mất Text hiện tại trên Combobox thì ta làm sao đây ? xin mời các bạn
Chúc cuối tuần vui vẽ và đừng bỏ lỡ Siêu kinh điển vào 0h00 đêm nay
 
Upvote 0
Tôi có một macro như sau:
PHP:
Sub ABC()
    MsgBox "Press Ctrl + Pause"
    ThisWorkbook.Close False
End Sub
Khi thông báo xuất hiện, người dùng có thể dừng macro bằng tổ hợp phím Ctrl + Pause. Vậy có cách nào ngăn người dùng dừng macro không?
 
Upvote 0
Tôi có một macro như sau:
PHP:
Sub ABC()
    MsgBox "Press Ctrl + Pause"
    ThisWorkbook.Close False
End Sub
Khi thông báo xuất hiện, người dùng có thể dừng macro bằng tổ hợp phím Ctrl + Pause. Vậy có cách nào ngăn người dùng dừng macro không?
Trùi ui, cái này trong mấy cái file đăng nhập của mình có đó! Đang đăng nhập mà nó chơi kiểu Ctrl+Break là vào nhà liền! Nên phải có câu lệnh đó để ngăn không cho sử dụng tổ hợp phím đó.
 
Upvote 0
có cách khác là dùng API giết luôn cửa sổ DropDownList , nhưng mà dài quá , cách trên hay hơn chứ
Còn cách khác nè. Vì đang dùng trong sự kiện KeyUp nên cách này sẽ an toàn hơn SendKey
PHP:
With ComboBox1
    .Visible = False
    .Visible = True
    .SetFocus
End With
 
Upvote 0
Ứng dụng của nó khi nào và ta có thể làm hàm kiểu Boolean để nhận biết Cbx.Dropdown hay không vậy bạn?
ứng dụng để khi filter List của Combobox nếu .Listcount = 0 thì tắt luôn DropDownList nhìn cho nó đẹp
còn làm kiểu Boolean để check Dropdown thì anh em mình giao lưu rồi mà ....
 
Upvote 0
Có một câu hỏi nhỏ dành cho các bạn mới bắt đầu với VBA thế này:
Các bạn hãy mở một workbook mới, chèn code dưới đây vào Thisworkbook
Mã:
Private Sub Workbook_SheetActivate(ByVal [COLOR=#FF0000][B]Sh[/B][/COLOR] As [B][COLOR=#FF0000]Object[/COLOR][/B])
  MsgBox "Tên sheet là: '" & Sh.Name & "'"
End Sub
Đây là sự kiện SheetActivate, mỗi khi chọn vào một sheet nào đó thì sự kiện sẽ được kích hoạt. Cụ thể, với code trên thì mỗi khi chọn sheet sẽ xuất hiện một thông báo
Code rất bình thường. Vấn đề là không biết các bạn có từng thắc mắc tại sao biến Sh lại được khai báo dạng Object mà không phải là Worksheet. Tức tại sao lại không là:
Mã:
Private Sub Workbook_SheetActivate(ByVal Sh As [COLOR=#FF0000][B]Worksheet[/B][/COLOR])
Các bạn thử suy nghĩ xem!
 
Upvote 0
Web KT

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

Back
Top Bottom