Không phải vậy đâu bạn Hổ à;BÁC HƯỚNG NÀY! Ở TRANG 262 , PHẦN XÓA DÒNG TRỐNG CÓ ĐOẠN CODE
If Application.CountA(Rows(i)) = 0 Then Rows(i).DeleteNext i
TÔI NGHỈ LÀ CÒN THIẾU End If PHẢI KHÔNG ?
If Anh = Em Then ChungTa = KetHon
If Em <17 Then
Em = "Chua Lo Lay Chong Voi Lam Gi, Doi Them Buon"
End If
If Em > 35 And CacAnhEmCuaEm = "Da Co Gia Dinh" Then _
Em = "Hay Lay Anh Lam Chong!"
If Em = Thuong And _
And = "Chua Vo" And _
Em = "Chua Chong" then
ChungTa =" Mot Doi Dua"
Else
ChungTa = " Chia Hai Nga Cho Roi!" : End If
Bạn Thử Xem Trang 262 Chép Lại Macro đó,trên đoạn Code đó Là For I =...
Rồi Chạy Thử Xem Sau.nó Báo Lổi đấy.
TÔI ĐẢ THẤY ĐƯỢC SỰ KHÁC BIỆT : NẾU ĐỂ DÒNG Rows(i).Delete XUỐNG DÒNG DƯỚI ,CHỨ KHÔNG LIỀN KỀ THEN THÌ PHẢI THÊM END IF
MỚI KHÔNG BỊ BÁO LỖI.
Hình như phải viết thế này:Application.OnTime Now + DateValue("12/31/2007 17:00:00"), "Thongbao"
Application.OnTime DateValue("12/31/2007") + TimeValue("17:00:00"), "Thongbao"
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?-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ỗ, 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.-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
- Đọ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!
Dim Sh As WorkSheet
For I = 1 To Sheets.Count
Set Sh = Sheets(I)
Debug.Print Sh.Name
Next I
Dim Sh As WorkSheet
For Each Sh In Sheets
Debug.Print Sh.Name
Next
Dim I&
I = 1
Do While [COLOR="Red"]Not IsEmpty(Cells(I, 1))[/COLOR]
Debug.Print I
I = I + 1
Loop
I = 1
While [COLOR="Red"]Not IsEmpty(Cells(I, 1))[/COLOR]
Debug.Print I
I = I + 1
Wend
I = 1
Do Until [COLOR="Red"]IsEmpty(Cells(I, 1))[/COLOR]
Debug.Print I
I = I + 1
Loop
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.Nguyên văn bởi TuanVNUNI
Khác nhau 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.
Sheets("Sheet1").active
Sheets("Sheet1").Activate
Sheets("sheet1").Range("A1:A12").Select
Sheets("sheet1").Range("A1:A12").Value = 100
Workbook("Popupmenu").Sheets("Sheet1").Range("B3").Select
Workbooks("Popupmenu.xls").Sheets("Sheet1").Range("B3").Select
MsgBox "Kiểu đồi tượng được chọn là" & TypeName(Selection)
ActiveCell.FormulaR1C1 = "=sum(R[-3]C:R[-1]C)"
và
ActiveCell.Formula = "=sum(R[-3]C:R[-1]C)"
Range("b5").Formula="=R[-3]C[2]-R[-1]C[2]"
ActiveCell.Formula="=R[-1]C:R[-2]C" Phải sửa lại là
ActiveCell.Formula="=R[-1]C*R[-2]C"
Range("c5").PasteSpecial Paste:=xlValues và
Range("c5").PasteSpecial xlPasteValues
application.CutCopyMode = False
application.CutCopyMode =xlCut
application.CutCopyMode =xlCopy
?Range("b3").NumberFormat Trả về kiểu định dạng số ô A3
Sửa lại là Trả về kiểu định dạng số ô B3
Workbooks("Congty.xls").Names.Add name:="congty", RefersTo:="=Danhsach!d1:d10"
Range("congty").Select
Range("a4").Cut Xóa toàn bộ A4
Range("A1").Font
Sub vd_Object()
Dim YourObject, MyObject, MyStr
Set MyObject = YourObject
YourObject.Text = "Hello World"
MyStr = MyObject.Text
Set MyObject = Nothing
End Sub
Selection.PasteSpecial Paste:=xlValues, operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlValues
Sub Log_in_Excel1()
Answer = WorksheetFunction.Log(Worksheets("Sheet3").Range("D2"))
MsgBox "Excel:Gia tri log(" & Range("D2").Value & ")= " & Answer
End Sub
*-* Trang 66
1.--> Active sửa lại làPHP:Sheets("Sheet1").active
.PHP:Sheets("Sheet1").Activate
2.--> Select method of Range class failed?PHP:Sheets("sheet1").Range("A1:A12").Select
Ý 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?
Sheets("sheet1").Select
Range("A1:A12").Select
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
--> Không xóa được vì Cut mà thiếu Past thi ko thực hiện được lệnh xóa.PHP:Range("a4").Cut Xóa toàn bộ A4
*-* Trang 95 Dòng 22 từ trên xuống
Ví dụ sau trả về đối tượng font của ô A1
Bị lỗi --> Invalid use of propertyPHP:Range("A1").Font
Vậy muốn biết Ô A1 đang dùng là Font gì làm cách nào ???
?Range("A1").Font.Name
?Range("A1").Font.Size
*-* Trang 138 Dòng số 9 từ trên xuố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???PHP:Selection.PasteSpecial Paste:=xlValues, operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
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???
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks _
:=False, Transpose:=False
*-* 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
Sub Log_in_Excel1()
Answer = WorksheetFunction.Log(Worksheets("Sheet3").Range("D2"))
MsgBox "Excel:Gia tri log(" & Worksheets("Sheet3").Range("D2").Value & ")= " & Answer
End Sub
*-* 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
*-* Trang 151 STT 4 Hàm IsError(expression) --> Phần Ví dụ nhầm với IsNumeric()
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
pmhoang đã viết: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???PHP:Selection.PasteSpecial Paste:=xlValues, operation:=xlMultiply, _ SkipBlanks:=False, Transpose:=False
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
Sub PasteMultiply()
Cells(1, 1).Copy
Cells(2, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlMultiply, SkipBlanks _
:=False, Transpose:=False
End Sub
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
Case Is > 1
TrangThai = "Chay"
Case 0.75 To 1
TrangThai = "Deo chay"
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
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
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
Select Case Err
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
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
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
*-* Trang 188
PHP: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
là đủ. Khi có sự trùng lặp giá trị (như là 1 chẳng hạn), hàm sẽ lấy giá trị đầu tiên trong vòng lặp.Case Is >= 1
Mã: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
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2