Để đáp ứng nhu cầu học tập kiến thức VBA ngày càng cao, vừa rồi tôi đã viết cuốn Lập trình VBA trong Excel tại Nhà xuất bản Thống kê. Các bạn có thể xem qua đường link ở đây:
Đây là nguồn kiến thức từ tài liệu tổng hợp, dịch sách nước ngoài, thu thập trên nhiều trang web, box Học tập online, kiến thức cá nhân + đóng góp của BQT,... Chính vì vậy, việc tổng hợp và xử lý dữ liệu để hoàn thành cuốn sách này là khá vất vả, không thể tránh được sai sót. Tôi mong muốn được sự góp ý của các thành viên về hình thức, nội dung, phương pháp trình bày để lần tái bản sau hoàn thiện hơn. Nội dung trao đổi trực tiếp trên diễn đàn hoặc qua email.
Cảm ơn Anh về tài liệu VBA, rất hay.
Em thấy nội dung hình như là thiếu đi hàm ISNumeric thì phải.
Anh xem lại giúp em nha.
Hy vọng sắp tới sẽ nhận được nhiều hơn nữa từ Anh.
Thanks
Để đáp ứng nhu cầu học tập kiến thức VBA ngày càng cao, vừa rồi tôi đã viết cuốn Lập trình VBA trong Excel tại Nhà xuất bản Thống kê. Các bạn có thể xem qua đường link ở đây:
Đây là nguồn kiến thức từ tài liệu tổng hợp, dịch sách nước ngoài, thu thập trên nhiều trang web, box Học tập online, kiến thức cá nhân + đóng góp của BQT,... Chính vì vậy, việc tổng hợp và xử lý dữ liệu để hoàn thành cuốn sách này là khá vất vả, không thể tránh được sai sót. Tôi mong muốn được sự góp ý của các thành viên về hình thức, nội dung, phương pháp trình bày để lần tái bản sau hoàn thiện hơn. Nội dung trao đổi trực tiếp trên diễn đàn hoặc qua email.
Cám ơn anh Hướng đã tặng cho tôi và bạn tôi 2 cuốn sách này.Tôi sẽ cố gắng tham khảo và ứng dụng.
Vì chưa biết rõ về VBA nên không biết đóng góp ý kiến gì cho cuốn sách.Nói chung tôi rất thích.
Cám ơn anh.Nếu có buổi Offline nào đừng quên thông báo nhé .Hẹn gặp lại anh cùng mọi người.
Mỉnh đã nhận được sách anh Hướng tặng, xin cám ơn Anh Hướng và GPE. Mình đã đọc ngay nhưng chưa được nhiều.
Có vài chỗ mình nghĩ chắc là lỗi typing:
- Trang 66:
Mã:
Sheets("Sheet1").[COLOR=blue]Active[/COLOR],
mình đoán là Activate
- Trang 77:
Mã:
Sử dụng thuộc tính Value:
ActiveSheet.Range("A1:C4").Value = [COLOR=blue]"= 4 * 25"[/COLOR]
Sử dụng thuộc tính Formula:
ActiveSheet.Range("A1:C4").Formula = "= 4 * 25"
Mình đoán là ActiveSheet.Range("A1:C4").Value = 4 * 25
Mỉnh đã nhận được sách anh Hướng tặng, xin cám ơn Anh Hướng và GPE. Mình đã đọc ngay nhưng chưa được nhiều.
Có vài chỗ mình nghĩ chắc là lỗi typing:
- Trang 66:
Mã:
Sheets("Sheet1").[COLOR=blue]Active[/COLOR],
mình đoán là Activate
- Trang 77:
Mã:
Sử dụng thuộc tính Value:
ActiveSheet.Range("A1:C4").Value = [COLOR=blue]"= 4 * 25"[/COLOR]
Sử dụng thuộc tính Formula:
ActiveSheet.Range("A1:C4").Formula = "= 4 * 25"
Mình đoán là ActiveSheet.Range("A1:C4").Value = 4 * 25
Sử dụng thuộc tính Value:
ActiveSheet.Range("A1:C4").Value = [COLOR=blue]"= 4 * 25"[/COLOR]
Sử dụng thuộc tính Formula:
ActiveSheet.Range("A1:C4").Formula = "= 4 * 25"
Mình đoán là ActiveSheet.Range("A1:C4").Value = 4 * 25
To: Phantuhuong,
Nếu trước khi gởi nhà xuất bản, mà gởi anh xem lại cho mấy cái code thì hay biết mấy.
Anh đọc một vài mục, thấy có nhiều lỗi về code hoặc code không rõ ràng, hay cho lắm.
To: Phantuhuong,
Nếu trước khi gởi nhà xuất bản, mà gởi anh xem lại cho mấy cái code thì hay biết mấy.
Anh đọc một vài mục, thấy có nhiều lỗi về code hoặc code không rõ ràng, hay cho lắm.
Vừa rồi tôi đã viết cuốn Lập trình VBA trong Excel . . . việc tổng hợp và xử lý dữ liệu để hoàn thành cuốn sách này là khá vất vả, không thể tránh được sai sót. Tôi mong muốn được sự góp ý của các thành viên về hình thức, nội dung, phương pháp trình bày để lần tái bản sau hoàn thiện hơn.
Trước đây mấy quyển sách mang tính học thuật thường có vài trang chứa những từ, mà thời @ nay hay gọi là từ khóa; bên cạnh các từ khóa đều liệt kê số những trang có đề cập đến từ khóa í! Điều này giúp cho người dùng tìm nhanh thứ cần tìm. Với máy vi tính thì cái này càng dễ lập, phải khộng bạn!
Mong rằng rất nên lập lại thói quen vì người tiêu dùng này trong quyễn tái bản của bạn!
Một lần nữa xin chân thành cảm ơn tác giả & tác phẩm rất nhiều!!
Trước đây mấy quyển sách mang tính học thuật thường có vài trang chứa những từ, mà thời @ nay hay gọi là từ khóa; bên cạnh các từ khóa đều liệt kê số những trang có đề cập đến từ khóa í! Điều này giúp cho người dùng tìm nhanh thứ cần tìm. Với máy vi tính thì cái này càng dễ lập, phải khộng bạn!
Mong rằng rất nên lập lại thói quen vì người tiêu dùng này trong quyễn tái bản của bạn!
Một lần nữa xin chân thành cảm ơn tác giả & tác phẩm rất nhiều!!
Cám ơn bác, em cũng nghĩ đến vấn đề này rồi nhưng còn phụ thuộc vào người biên tập chính. Các sách nước ngoài đều có cả, nếu tái bản thì dem đề nghị NXB bổ sung vào.
Mình đang đọc cuốn sách của thầy Hướng, và mong muốn có được nhiều bài tập (càng nhiều càng tốt) để thực hành những điều mình vừa được học nhưng đáng tiếc là mình tìm nhưng không có.
Vậy có ai biết được ở đâu bán sách về bài tập VBA cho excel hoặc những web có bài tập thì làm ơn chỉ giúp mình với.
Mình đang đọc cuốn sách của thầy Hướng, và mong muốn có được nhiều bài tập (càng nhiều càng tốt) để thực hành những điều mình vừa được học nhưng đáng tiếc là mình tìm nhưng không có.
Vậy có ai biết được ở đâu bán sách về bài tập VBA cho excel hoặc những web có bài tập thì làm ơn chỉ giúp mình với.
Tôi cũng rất muốn nhưng đối tượng sử dụng VBA rất đa dạng, vì vậy ví dụ phải phù hợp với ngành nghề ---> điều này khó khả thi.
Ví dụ người làm kế toán sẽ khó hiểu khi yêu cầu làm bài về lĩnh vực bê tông, sắt thép,... và ngược lại (bản thân tôi hoàn toàn mù tịt về lĩnh vực kế toán ).
Ở 1 mức độ nào đó, trong sách hay trên diễn đàn đã có nội dung để bạn tham khảo rồi.
Bạn nên tự nghĩ ra 1 bài toán trong ngành nghề của bạn và xây dựng chương trình, kết hợp kiến thức của sách + diễn đàn,...
Cái này là do chiều rộng hàng không đủ thì tự xuống dòng thôi, đây vẫn là 1 dòng code, bạn ngvanho lưu ý nhiều trường hợp sẽ bị như vậy vì code dài quá 1 dòng. Nếu dòng code vừa đủ 1 dòng thì khoảng cách chữ đều nhau, nếu quá 1 dòng thì khoảng cách chữ thường bị giãn dài ra, ví dụ như dấu "=" hoặc "0" chẳng hạn tại dòng lệnh đó
- Đọc cuốn sách của bác Hướng, mình thấy tác giả đã bỏ ra biết bao công sức để mang lại lợi ích cho cộng đồng. Cuốn sách đã giúp mình rất nhiều trong việc học và nghiên cứu VBA. Cám ơn bác Hướng thật nhiều.
-Mình cũng xin nêu một vài chỗ còn thắc mắc nhờ tác giả và các bạn giải đáp giùm:
VẤN ĐỀ 1:
-Trang 192: 14.2.1 - Điều khiển Do...Loop
Thực hiện một khối lệnh với số lần lặp xác định...
-Trang 194: 14.2.5 - Điều khiển For...Next
Bạn có thể lặp hành động với số lần biết trước...
Thắc mắc ở chỗ: Số lần lặp xác định và số lần biết trước có khác nhau gì không?
VẤN ĐỀ 2:
-Trang 194: 14.2.4 - Điều khiển Do Until...Loop
Bạn có thể thực hiện các khối lệnh từ đầu vòng lặp cho đến khi điều kiện vẫn True. Đến khi điều kiện false thì sẽ thoát ra. Phương thức này giống như vòng lặp For...Next
-Thắc mắc ở chỗ, hình như đối Do Until...Loop, khi điều kiện false vòng lặp chạy, khi điều kiện true vòng lặp mới thoát.
-Và Do Until...Loop giống For...Next ở chỗ nào? Cám ơn nhiều!
- Đọc cuốn sách của bác Hướng, mình thấy tác giả đã bỏ ra biết bao công sức để mang lại lợi ích cho cộng đồng. Cuốn sách đã giúp mình rất nhiều trong việc học và nghiên cứu VBA. Cám ơn bác Hướng thật nhiều.
-Mình cũng xin nêu một vài chỗ còn thắc mắc nhờ tác giả và các bạn giải đáp giùm:
VẤN ĐỀ 1:
Thắc mắc ở chỗ: Số lần lặp xác định và số lần biết trước có khác nhau gì không?
VẤN ĐỀ 2:
-Thắc mắc ở chỗ, hình như đối Do Until...Loop, khi điều kiện false vòng lặp chạy, khi điều kiện true vòng lặp mới thoát.
-Và Do Until...Loop giống For...Next ở chỗ nào? Cám ơn nhiều!
For..Next : Thường được dùng với số vòng lặp được xác định trước
Mã:
Dim Sh As WorkSheet
For I = 1 To Sheets.Count
Set Sh = Sheets(I)
Debug.Print Sh.Name
Next I
Hay
Mã:
Dim Sh As WorkSheet
For Each Sh In Sheets
Debug.Print Sh.Name
Next
Ở đây, Sheets.Count là số sheet được xác định trước, vòng lặp chạy từ sheet 1..Sheets.Count (có thể là 0,1....n), giá trị của Sheets.Count sẽ không thay đổi cho đến khi thoát khỏi vòng lặp (cho dù có thể số sheet đã tăng hay giảm trong quá trình chạy vòng lặp.
Do While..Loop, While..WEnd và Do Until..Loop
Xét một ví dụ thực hiện duyệt các giá trị trong Cột A từ dòng 1, vòng lặp chỉ dùng lại khi giá trị ở dòng thứ I là trống (rỗng)
Ở ví dụ này thì số vòng lặp là không biết trước, nó chỉ dừng lại khi thỏa mãn một điều kiện nào đó được xác định ở đầu vòng lặp, sau từ khóa While, Until
Cách 1:
Mã:
Dim I&
I = 1
Do While [COLOR="Red"]Not IsEmpty(Cells(I, 1))[/COLOR]
Debug.Print I
I = I + 1
Loop
Cách 2:
Mã:
I = 1
While [COLOR="Red"]Not IsEmpty(Cells(I, 1))[/COLOR]
Debug.Print I
I = I + 1
Wend
Cách 3:
Mã:
I = 1
Do Until [COLOR="Red"]IsEmpty(Cells(I, 1))[/COLOR]
Debug.Print I
I = I + 1
Loop
(*) Biểu thức đứng sau từ khóa While, Until được thực hiện với mỗi vòng lặp
Trên là những điều khác nhau rất cơ bản giữa For..Next và Do While/Do Until..Loop, While WEnd.
Cám ơn TuanVNUNI. Mình không hỏi về sự khác nhau giữa For...Next và Do ...Loop...Mình chỉ thắc mắc ở một số dòng, một số ý trong cuốn sách viết về các loại vòng lặp trên. Nếu những thắc mắc của mình là hợp lý thì có thể giúp tác giả hiệu chỉnh sách cho toàn vẹn hơn. Tất nhiên nếu có, thì những chỗ chưa ổn này là rất nhỏ so với một công trình biên soạn trên 500 trang.
Cám ơn TuanVNUNI. Mình không hỏi về sự khác nhau giữa For...Next và Do ...Loop...Mình chỉ thắc mắc ở một số dòng, một số ý trong cuốn sách viết về các loại vòng lặp trên. Nếu những thắc mắc của mình là hợp lý thì có thể giúp tác giả hiệu chỉnh sách cho toàn vẹn hơn. Tất nhiên nếu có, thì những chỗ chưa ổn này là rất nhỏ so với một công trình biên soạn trên 500 trang.
Vâng, em viết chi tiết bài trên cũng để những thành viên khác nếu chưa rõ tham khảo thêm. Vấn đề về vòng lặp For, While...nếu người đọc không hiểu hiểu rõ nguyên lý (chỉ hiểu đơn giản là vòng lặp) thì rất tai hại, khi lập trình sẽ dẫn đến sai mà lỗi đó không phải dễ nhận ra đâu (lỗi tiềm ẩn).
Mặc dù 1 dòng chưa rõ ràng, nó có thể nó không thấm vào đâu trong số 500 dòng của cuốn sách nhưng tác giả cũng lưu ý là có thể có 5000 người đọc dòng này.
Tại VD4 trang 479 tác giả có đề cập là khi thay đổi tọa độ trong Excel thì được cập nhật ngay trong AutoCAD, nhưng trong mã code thì không có phần này do đó tác giả có thể bổ sung thêm phần này được không, tác giả có thể đưa lên DĐ hoặc mail riêng dùm : vienbp2004@yahoo.com
Ý 2 chỉ thực hiện được khi mình đã Activate sheet1 rồi, Nhưng nếu như mà Activate sheet1 rồi thì trong câu lệnh không cần thiết phải thêm Sheets("sheet1"). mà chỉ cần Range("A1:A12").Select
=> Ý 2 không phải là 1 câu lệnh tổng quát vì khi mình dang đứng ở sheet2 mà thực hiện lệnh sẽ báo lỗi Select method of Range class failed?
Em nghĩ trong thực tế mình select là luôn nhìn thấy cái mình đã chọn, nên không thể đứng ở sheet2 mà select 1 vùng ở sheet1 được, Nhưng có thể gán giá trị cho vùng o sheet1 được
VD Thay select = value thi ok.
Sheets("sheet1").Range("A1:A12").Select
Thay bằng:
PHP:
Sheets("sheet1").Range("A1:A12").Value = 100
thì OK.
Xin bo sung 2 ví dụ như vậy để phân biệt cho bạn đọc hiểu rõ hơn
Xin ý kiến của cac ban GPE
Sach VBA for Excel Trang 80
Dong lệnh này bị lỗi Subscript out of range
Khi đứng ở vị trí sheet khác sheet1 (sheet2 chẳn hạn) se bao lỗi Select method of Range class failde Trang 82:
PHP:
MsgBox "Kiểu đồi tượng được chọn là" & TypeName(Selection)
Mình thấy hình trong sách hiện lên thông báo có dấu tiếng việt đàng hoàng mà mình không thể làm được. Mong cac anh em giup nhe. Trang 83:
Dòng thứ 2 Câu lệnh Cells(5,A).Select --> Chọn ô đơn A5 là không thực hiện được Trang 88:
Tai sao thấy hai câu lệnh này không có khác nhau gì hết?
PHP:
ActiveCell.FormulaR1C1 = "=sum(R[-3]C:R[-1]C)"
và
ActiveCell.Formula = "=sum(R[-3]C:R[-1]C)"
Ví dụ 2:
Nhập vào công thức =F2-F4 trong ô D5. Theo Code này thì phải sữa lại là
PHP:
Range("b5").Formula="=R[-3]C[2]-R[-1]C[2]"
Theo Code này thì phải sữa lại là: Nhập vào công thức =D2-D4 trong ô B5. Ví dụ 3: Đề bài là: G6=G5*G4
PHP:
ActiveCell.Formula="=R[-1]C:R[-2]C" Phải sửa lại là
ActiveCell.Formula="=R[-1]C*R[-2]C"
Hai đoạn Code này có tác dụng là past giá trị (không biết nó khác nhau o cho nào?)
1.
PHP:
Range("c5").PasteSpecial Paste:=xlValues và
Range("c5").PasteSpecial xlPasteValues
Ba Code này là Thoát khoải lệnh copy (Không biết sự khác biệt của nó ra sao?)
2.
--> Là chọn khối tương đối, Nếu ta nháp vào góc trên bên trái (Names Box) thì mỗi lần chọn "congty" là 1 khối ô được nhảy đến vị trí mới.
Nhưng ko hiểu tại sao Code này lúc nào cũng chọn đúng vùng D110 ??? không biết vì sao???
PHP:
Range("congty").Select
*-* Trang 92 Ở dòng 19 từ trên xuống
PHP:
Range("a4").Cut Xóa toàn bộ A4
--> Không xóa được vì Cut mà thiếu Past thi ko thực hiện được lệnh xóa. *-* Trang 95 Dòng 22 từ trên xuống
Ví dụ sau trả về đối tượng font của ô A1
PHP:
Range("A1").Font
Bị lỗi --> Invalid use of property
Vậy muốn biết Ô A1 đang dùng là Font gì làm cách nào ???
*-* Trang 111 Ví dụ 2: Sao làm mà cứ bị lỗi, hình như là thiếu cái gì đó.
PHP:
Sub vd_Object()
Dim YourObject, MyObject, MyStr
Set MyObject = YourObject
YourObject.Text = "Hello World"
MyStr = MyObject.Text
Set MyObject = Nothing
End Sub
Code nay tai sao past lúc nào cũng cho gia trị =0 hết??? Mình cũng không hiểu được đoạn Code này???
Nhưng nếu xóa đi các phần ở sau như the này thì Past bình thường. Xin GPE chỉ giúp???
PHP:
Selection.PasteSpecial Paste:=xlValues
*-* Trang 144 Dòng số 6 tu duoi len.
PHP:
Sub Log_in_Excel1()
Answer = WorksheetFunction.Log(Worksheets("Sheet3").Range("D2"))
MsgBox "Excel:Gia tri log(" & Range("D2").Value & ")= " & Answer
End Sub
VD Sub này không hợp lý, vì nếu đứng ở sheet1 và chạy thì, Giá trị để tính là Sheets3!D2, nhưng khi hiện lên thông báo với giá trí Sheet1!D2, Sheets3!D2 khác Sheet1!D2 cho nên có khả năng cho ra thông báo sai như sau:
Excel: Gia tri Log(0) = 0.3010 --> Sai. *-* Trang 151 STT 4 Hàm IsError(expression) --> Phần Ví dụ nhầm với IsNumeric()
Cám ơn anh pmhoang đã dày công nghiên cứu và chỉ ra một số lỗi. Trong quá trình biên soạn, do thời gian và công việc cũng hơi bận nên 1 số chỗ chủ quan, chưa soát kỹ mọi trường hợp xảy ra.
Mong các bạn thông cảm, hy vọng lần sau sẽ hoàn thiện, đầy đủ và ít lỗi hơn.
Tôi xin bổ sung thêm 1 số thông tin như sau:
Ý 2 chỉ thực hiện được khi mình đã Activate sheet1 rồi, Nhưng nếu như mà Activate sheet1 rồi thì trong câu lệnh không cần thiết phải thêm Sheets("sheet1"). mà chỉ cần Range("A1:A12").Select
=> Ý 2 không phải là 1 câu lệnh tổng quát vì khi mình dang đứng ở sheet2 mà thực hiện lệnh sẽ báo lỗi Select method of Range class failed?
Như bạn nói là đúng, để Sheets("sheet1").Range("A1:A12").Select hoạt động thì bắt buộc Sheet1 đang được kích hoạt, nếu không sẽ báo lỗi. Một số ví dụ khác tương tự. Lệnh đầy đủ gồm 2 dòng:
Code nay tai sao past lúc nào cũng cho gia trị =0 hết??? Mình cũng không hiểu được đoạn Code này???
Nhưng nếu xóa đi các phần ở sau như the này thì Past bình thường. Xin GPE chỉ giúp???
Sub Log_in_Excel1()
Answer = WorksheetFunction.Log(Worksheets("Sheet3").Range("D2"))
MsgBox "Excel:Gia tri log(" & Range("D2").Value & ")= " & Answer
End Sub
Sub Log_in_Excel1()
Answer = WorksheetFunction.Log(Worksheets("Sheet3").Range("D2"))
MsgBox "Excel:Gia tri log(" & Worksheets("Sheet3").Range("D2").Value & ")= " & Answer
End Sub
Sub Log_in_Excel1()
Answer = WorksheetFunction.Log(Worksheets("Sheet3").Range("D2"))
MsgBox "Excel:Gia tri log(" & Range("D2").Value & ")= " & Answer
End Sub
Tại VD4 trang 479 tác giả có đề cập là khi thay đổi tọa độ trong Excel thì được cập nhật ngay trong AutoCAD, nhưng trong mã code thì không có phần này do đó tác giả có thể bổ sung thêm phần này được không, tác giả có thể đưa lên DĐ hoặc mail riêng dùm : vienbp2004@yahoo.com
Code nay tai sao past lúc nào cũng cho gia trị =0 hết??? Mình cũng không hiểu được đoạn Code này??? Nhưng nếu xóa đi các phần ở sau như the này thì Past bình thường. Xin GPE chỉ giúp???
Xin giải thích: Đây là code paste với cách đặc biệt là nhân ô chọn (hoặc vùng chọn) với 1 số chứa trong 1 ô khác đã copy. Thí dụ đầy đủ:
PHP:
Sub PasteMultiply()
Cells(1, 1).Copy
Cells(2, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlMultiply, SkipBlanks _
:=False, Transpose:=False
End Sub
Chỉ cần 1 trong 2 ô A1 hoặc A2 có giá trị 0 thì kết quả sẽ bằng zero.
Nghĩa là hễ copy 1 ô có số, paste kiểu này vào ô trống, luôn luôn bằng không. Nếu Paste vào ô có giá trị số, số cũ sẽ được nhân lên.
Function TrangThai(Doset As Single)
Select Case Doset
Case Is > 1, 1
TrangThai = "Chay"
Case 0.75 To 1
TrangThai = "Deo chay"
Case 0.5 To 0.75
TrangThai = "Deo mem"
Case 0.25 To 0.5
TrangThai = "Deo cung"
Case 0 To 0.25
TrangThai = "Nua cung"
Case Is < 0
TrangThai = "Cung"
End Select
End Function
'Doset =1 co 2 Case thoa man "Chay" va "Deo chay" tai sao lai lay gia tri "Chay"???
Nếu ta bỏ bới, 1, sẽ thành như sau:
Giá trị Doset=1 se trả về "Deo chay" nghĩa là sao???
PHP:
Case Is > 1
TrangThai = "Chay"
Case 0.75 To 1
TrangThai = "Deo chay"
*-* Trang 196 Ví dụ ExitStatementDemo() mỗi lầ Run là Thoát không thấy gì hết, nên khó hiểu được tác dụng gì hết. Mình đã thêm vài dòng MsgBox như sau sẽ làm người mới học hiểu rõ hơn.
PHP:
Sub Exit_StatementDemo()
Dim i, MyNum
Do
For i = 1 To 1000
MyNum = Int(Rnd * 1000)
Select Case MyNum
Case 7
MsgBox "Gia tri MyNum = " & MyNum & Chr(13) & " Exit For"
Exit For
Case 29
MsgBox "Gia tri MyNum = " & MyNum & Chr(13) & " Exit Do"
Exit Do
Case 54
MsgBox "Gia tri MyNum = " & MyNum & Chr(13) & " Exit Sub"
Exit Sub
End Select
Next i
Loop
End Sub
*-* Trang 204 Dong 8 từ dưới lên.
PHP:
MsgBox "Dia chi o cuoi cung: " & Mang.Cells(Cot, Hang).Address
Sửa lại là
MsgBox "Dia chi o cuoi cung: " & Mang.Cells(Hang, Cot).Address
*-* Trang 206
PHP:
Sub Input_Bay_Loi()
On Error Resume Next
Dim Mang As Variant
Set Mang = Application.InputBox("Nhap vao mang: ", "Tim kiem")
''Se bi rong khi an nut Cancel hoac an phim Esc, khi do ban bay duoc truong hop nay.
If IsEmpty(Mang) Then
MsgBox "Ban khong nhap noi dung gi ca!"
Else
MsgBox "Chuc mung!"
End If
End Sub
Sao lúc nào cũng cho kết quá là "Ban khong nhap noi dung gi ca!" Không biết lỗi ở đâu??? *-* Trang 221 Dòng 14 dưới lên
PHP:
Select Case Err
Err la bien o dau ra. mà nó lại có các giá trị để vào điều kiện Case ,sao ko thay dinh nghia nó???
PHP:
Sub SelectionSqr2()
Dim Cell As Range
Dim ErrMsg As String
On Error GoTo ErrorHandler
If TypeName(Selection) <> "Range" Then Exit Sub
For Each Cell In Selection
Cell.Value = Sqr(Cell.Value)
Next Cell
Exit Sub
ErrorHandler:
MsgBox "Err la: " & Err 'Err la bien o dau ra???
Select Case Err
Case 5 'So am thi bo qua
MsgBox "So am bo qua"
Resume Next
Case 13 'Sai kieu so lieu nhu la chuoi bo qua
MsgBox "Kieu text bo qua"
Resume Next
Case 1004 'Cells bi khoa hay Sheet bi protect
MsgBox "Cells bi khoa roi, thu lai lan nua di!"
Exit Sub
Case Else
ErrMsg = Error(Err.Number) 'Cac loi khac
MsgBox "ERROR: " & ErrMsg
Exit Sub
End Select
End Sub
*-* Trang 243 Dòng 6 từ trên xuống.
Nếu bạn chọn No thì sẽ xuất hiện hộp điều khiển này. --> Sai. Sửa lại là: Chon No thi sẽ không lưu. *-* Trang 254
PHP:
Dim Khoang_Thoi_Gian As Date
Sub CapNhatGio()
'Cap nhat tai A1 voi gio hien tai
ThisWorkbook.Sheets(1).Range("A1") = Time
'Cach 1 giay thi gio cap nhat
Khoang_Thoi_Gian = Now + TimeValue("00:00:01")
Application.OnTime Khoang_Thoi_Gian, "CapNhatGio"
End Sub
Sub DungGio()
'Huy su kien OnTime (Dung gio tai o A1)
On Error Resume Next
Application.OnTime Khoang_Thoi_Gian, "CapNhatGio", , False
End Sub
Không hiểu tại sao DungGio() lại không có tác dụng gì cả, Thời gian vẫn nhảy bình thường???
PHP:
Sub Setup_OnKey()
Application.OnKey "{PgDn}", "PgDn_Sub"
Application.OnKey "{PgUp}" "PgUp_Sub" 'Thiếu dấu ,
End Sub
Sub DgDn_Sub()
On Error Resume Next
If TypeName(ActiveSheet) = "Worksheet" Then
ActiveCell.Offset(2, 0).Acvivate
End Sub
Sub DgUp_Sub()
On Error Resume Next
If TypeName(ActivaSheet) = "Worksheet" Then
ActiveCell.Offset(-2, 0).Activate
End Sub
Setup_OnKey() thiếu dấu ,
PgDn_Sub() thiếu End If
PgUp_Sub() Thiếu End If
Và khi sửa lại lỗi thì Run Setup_OnKey() xong ra ngoai bảng tính và bấm Page_Up hay Page_Dn, cung không thấy có tác dụng gì cả???
Function TrangThai(Doset As Single)
Select Case Doset
Case [COLOR="Red"]Is > 1, 1[/COLOR]
TrangThai = "Chay"
Case 0.75 To 1
TrangThai = "Deo chay"
Case 0.5 To 0.75
TrangThai = "Deo mem"
Case 0.25 To 0.5
TrangThai = "Deo cung"
Case 0 To 0.25
TrangThai = "Nua cung"
Case Is < 0
TrangThai = "Cung"
End Select
End Function
Sub Exit_StatementDemo()
Dim i, MyNum
Do
For i = 1 To 1000
MyNum = Int(Rnd * 1000)
Select Case MyNum
Case 7
MsgBox "Gia tri MyNum = " & MyNum & Chr(13) & " Exit For"
Exit For
Case 29
MsgBox "Gia tri MyNum = " & MyNum & Chr(13) & " Exit Do"
Exit Do
Case 54
MsgBox "Gia tri MyNum = " & MyNum & Chr(13) & " Exit Sub"
Exit Sub
End Select
Next i
Loop
End Sub
Trong sach VBA Trang 196 Đoạn code trong đó không có thông báo nào. Cái thông báo là em thêm vào cho rõ nghĩa đó. ý em là muốn cho nó rõ nghĩa để người học dể hiểu. còn trong sách thì im rê và Exit âm thầm.
*-* Trang 262 dòng 5 từ dưới lên
If thiếu End If *-* Trang 267 dong 3 trên xuống bi lỗi gì đó. *-* Trang 268 Sub WorkBook_SheetSelectionChange
Sub này Run là không thể copy, autofill, (nhưng cho có công thức)???
Có cách nào chỉ Protect 1 vùng lựa chọn chẳn hạn như 1 hàng đầu không cho phép chỉnh sửa (vị sợ làm vô tình làm sai công thức), nhưng cho phép người dùng kéo xuống sử dụng bình thường không? *-* Trang 293 Hàm nội suy 1 chiều như trong VBA đã bị lỗi.
Mình đã sửa lỗi và cũng có ghi một vài điều thắc mắc về nó trong file.Mong GPE giup!
Nhập góc ma sat trong: 21.6 vao ô G3
1. Ô F11=G3, không có tính toán gì mà sao vẫn ra số không chính xác. (bị sai so 0.0000038)???
Nhập góc ma sat trong: 14 vao ô G3
2. 14 là góc chính xác, sao lại nội suy ra toàn là số mang theo 1 đóng dấu phẩy ở đằng sau???
Hàm nội suy 2 chiều không Run được, mình đã tìm cách sửa ma không được, nó bị lỗi dạng Range(0,1) vd ta co range X(n-1,1)
khi n=1->X(0,1)=z/b lúc này nó là text không thể tính toán được, nên gây ra lỗi.
Xin Thầy Hướng và anh em gpe Giup do. để hoàn chỉnh sach VBA (file goi kèm)
Sách mua về em đọc chưa nhiều, vì em vốn lười đọc, đụng đâu thì đọc đó, nhưng em thấy đây là cuốn sách rất hay, rất chi tiết (mặc dù còn vài lỗi nhỏ như các thành viên khác đã chỉ ở trên). Em thực hành cái bài chuyển dữ liệu từ Excel thành bản vẽ AutoCad và thấy nó rất tuyệt vời, công việc của em là phải theo dõi và kiểm tra thi công tuyến ống (pipe line), nên nhờ có đoạn code của bác Hướng mà công việc đỡ vất vả hơn (lại chính xác nữa). Mong bác Hướng (và các cao nhân trong site mình nữa) sẽ có thêm những công trình thiết thực để chia sẻ với mọi người, và để newbie như em được học hỏi thêm nữa. Xin cám ơn.
Anh Hướng có dự định viết tiếp không ? Quyển này chỉ là khởi đầu thôi, nếu lười đọc vào diễn đàn tham khảo có thể được. Nhưng còn nhiều vấn đề nâng cao 1 chút, trong khi tiếng Anh hạn chế thì thật khó mà tham khảo. Như Class, Excel và các chương trình khác, can thiệp sâu hơn vào hệ thống chương trình "bình dân" như bọn mình mù tịt. Nhất là tham khảo code của nước ngoài viết thấy họ sử lý thực hay, kỳ lạ và hiệu quả.Do bất đồng ngôn ngữ không sao học được. Tiếp tục đi anh Hướng à.
Anh Hướng có dự định viết tiếp không ? Quyển này chỉ là khởi đầu thôi, nếu lười đọc vào diễn đàn tham khảo có thể được. Nhưng còn nhiều vấn đề nâng cao 1 chút, trong khi tiếng Anh hạn chế thì thật khó mà tham khảo. Như Class, Excel và các chương trình khác, can thiệp sâu hơn vào hệ thống chương trình "bình dân" như bọn mình mù tịt. Nhất là tham khảo code của nước ngoài viết thấy họ sử lý thực hay, kỳ lạ và hiệu quả.Do bất đồng ngôn ngữ không sao học được. Tiếp tục đi anh Hướng à.
Cũng muốn viết tiếp nhưng bận quá và còn phải đi kiếm ăn nuôi con. Sang đầu năm 2009 tái bản cuốn sách này (đã sửa đổi, bổ sung một số nội dung cho phù hợp, chính xác).
bây giờ em mới biết thông tin là có cuốn sách như thế. em mơ ước đã lâu về việc có quyển sách TIẾNG VIỆT về VBA for E. là một dân kỹ thuật, em biết áp đụng dược các code vào bảng tính cầu là cực kỳ hữu ích. Mai em đi..mua.
Đây là vấn đề đau đầu vì lỗi thường do biên tập và soát xét không cẩn thận. Trong các nhà sách đã xuất bản, có lẽ chỉ NXB Thống kê làm việc chuẩn chỉ và chuyên nghiệp nhất. Bản thân tôi cũng thấy áy náy với các bạn đọc khi sách xuất bản mà bị lỗi chính tả, lỗi lập trình...
Mà anh có nhiều cuốn nhỉ
Đây là vấn đề đau đầu vì lỗi thường do biên tập và soát xét không cẩn thận. Trong các nhà sách đã xuất bản, có lẽ chỉ NXB Thống kê làm việc chuẩn chỉ và chuyên nghiệp nhất. Bản thân tôi cũng thấy áy náy với các bạn đọc khi sách xuất bản mà bị lỗi chính tả, lỗi lập trình...
Mà anh có nhiều cuốn nhỉ
Mình thấy quyển Lập trình VBA trong Excel cho người ... rất hay rồi thầy ạ, vậy thầy có nghĩ tới việc xuất bản quyển Cuốn Lập trình VBA trong Excel nâng cao ...không vậy thầy?
Mình thấy quyển Lập trình VBA trong Excel cho người ... rất hay rồi thầy ạ, vậy thầy có nghĩ tới việc xuất bản quyển Cuốn Lập trình VBA trong Excel nâng cao ...không vậy thầy?
Trong quyển phát hành 2014, em xem thấy cuối trang "LỜI NÓI ĐẦU" (trang 5) có dòng:
"Đại diện Ban quản trị giải Pháp Exel"
Em thắc mắc tại sao lại viết hoa từ "Pháp"?
Trong quyển phát hành 2014, em xem thấy cuối trang "LỜI NÓI ĐẦU" (trang 5) có dòng:
"Đại diện Ban quản trị giải Pháp Exel"
Em thắc mắc tại sao lại viết hoa từ "Pháp"? View attachment 150652