tuananhya2
Thành viên mới

- Tham gia
- 18/8/12
- Bài viết
- 8
- Được thích
- 0
Co ai chỉ dùm cách tạo pass marco với
khi bắt đầu in nó hiện thông báo như sau (hình đính kèm)Theo mình thì câu lệnh trên đã in ra rồi, không có cài gì để hiện thông báo lên màn hình cả.
Kiên nhẫn đợi câu trả lời khác xem sao.
Cái thông báo ấy có vướng bận gì đâu mà bạn cần phải tắt nó không biếtkhi bắt đầu in nó hiện thông báo như sau (hình đính kèm)
em nghĩ có lẽ có một câu lệnh nào đó không cập nhật thông báo này dạng
[GPECODE=vb]application.(gì đó) = false[/GPECODE]
nhưng mà em không biết, em đã thử application.displayalert = false nhưng không được
Làm thì chắc là được nhưng hơi vất vả nghen. Mình có xem qua đường link anh NDU giới thiệu nhưng thấy có vẻ không cần thiết phải cực khổ như thế. Để dành thời gian suy nghĩ cái cần hơn trước cái đã.khi bắt đầu in nó hiện thông báo như sau (hình đính kèm)
em nghĩ có lẽ có một câu lệnh nào đó không cập nhật thông báo này dạng
[GPECODE=vb]application.(gì đó) = false[/GPECODE]
nhưng mà em không biết, em đã thử application.displayalert = false nhưng không được
Bạn thử với code này xem sao!Chào các bạn
Mình đang có khối từ ô D10 đến ô D30000, khối ô này là ngày tháng (định dạng theo kiểu dd/mm/yy) bây giờ trong khối cell này có lẫn một số ô không phải là ngày tháng (ví dụ: '03/02/12 hoặc abc, ....)
Bây giờ mình muốn các bạn giúp code để duyệt tất cả các ô trên, nếu ô nào kg phải là kiểu ngày tháng nói trên hoặc là test ... thì code sẽ tô ô bị lỗi màu đỏ! (nếu có bảng thông báo cell nào bị lỗi thì càng tốt)
Xin cảm ơn các bạn!
Sub Format_ColumnD()
Dim i, Arr(), Text As String
[D10:D10000].Font.ColorIndex = 1
Text = "Bi5 lo64i cell "
Arr = Range([D10], [D65536].End(4))
For i = 1 To UBound(Arr)
If Arr(i, 1) <> "" Then
If VarType(Arr(i, 1)) <> 7 Then
Cells(i + 9, 4).Font.ColorIndex = 3
CreateObject("WScript.Shell").Popup UniConvert(Text, "VNI") & Cells(i + 9, 4).Address, , "THÔNG BÁO by H.V", vbOKOnly
End If: End If
Next
End Sub
Phải vầy không?Bạn thử với code này xem sao!
Cell bị lỗi nhiều thì bấm mỏi tay! Khuyến mãi luôn MsgBox tiếng Việt có dấu của Thầy Ndu
---------------
Các Thầy cô cho em hỏi làm sao để gom tất cả các Cell bị lỗi để thể hiện trong MsgBox 1 lần?
Em cảm ơn!
Mã:Sub Format_ColumnD() Dim i, Arr(), Text As String [D10:D10000].Font.ColorIndex = 1 Text = "Bi5 lo64i cell " Arr = Range([D10], [D65536].End(4)) For i = 1 To UBound(Arr) If Arr(i, 1) <> "" Then If VarType(Arr(i, 1)) <> 7 Then Cells(i + 9, 4).Font.ColorIndex = 3 CreateObject("WScript.Shell").Popup UniConvert(Text, "VNI") & Cells(i + 9, 4).Address, , "THÔNG BÁO by H.V", vbOKOnly End If: End If Next End Sub
Sub to_mau()
Dim dl(), i, Res As String, text As String
text = "Bi5 lo64i ca1c cell na2y: "
dl = Range([D10], [D65536].End(3)).Value
For i = 1 To UBound(dl)
If VarType(dl(i, 1)) <> 7 Then
Res = Res & "," & "D" & i + 9
End If
Next
Res = Replace(Res, ",", "", 1, 1)
Range(Res).Interior.ColorIndex = 6
CreateObject("WScript.Shell").Popup UniConvert(text, "VNI") & Res, , "THÔNG BÁO by H.V", vbOKOnly
End Sub
Em còn đang mơ hồ cái này?Phải vầy không?
PHP:Sub to_mau() Dim dl(), i, Res As String, text As String text = "Bi5 lo64i ca1c cell na2y: " dl = Range([D10], [D65536].End(3)).Value For i = 1 To UBound(dl) If VarType(dl(i, 1)) <> 7 Then Res = Res & "," & "D" & i + 9 End If Next Res = Replace(Res, ",", "", 1, 1) Range(Res).Interior.ColorIndex = 6 CreateObject("WScript.Shell").Popup UniConvert(text, "VNI") & Res, , "THÔNG BÁO by H.V", vbOKOnly End Sub
Res = Replace(Res, ",", "", 1, 1)
Khi mình nối các chuỗi lại với nhau thì lòi ra cái dấu "," phía trước. Cho nên phải dùng Replace để khử nó thôi màEm còn đang mơ hồ cái này?
Mục đích làm gì vậy anh ? nhờ anh giải thích, em cảm ơn!Mã:Res = Replace(Res, ",", "", 1, 1)
Sub Replace_Function()
Dim str As String
str = "Lap Trinh VBA Vba Trong Excel"
MsgBox Replace(str, "VBA", "")
MsgBox Replace(str, "VBA", "", , , 1)
End Sub
Em còn đang mơ hồ cái này?
Mục đích làm gì vậy anh ? nhờ anh giải thích, em cảm ơn!Mã:Res = Replace(Res, ",", "", 1, 1)
Sub KTra()
Tmparr = Union(Range("A1:A6"), Range("C1:C6")).Value
For i = 1 To UBound(Tmparr, 1)
Debug.Print Tmparr(i, 2)
Next
End Sub
Phát hiện thêm 1 lỗi: Với dữ liệu khoảng 10,000 dòng thì phép nối chuổi bị phá sản ---> Trường hợp này cứ xử lý cell à chắc ăn nhất:Phải vầy không?
PHP:Sub to_mau() Dim dl(), i, Res As String, text As String text = "Bi5 lo64i ca1c cell na2y: " dl = Range([D10], [D65536].End(3)).Value For i = 1 To UBound(dl) If VarType(dl(i, 1)) <> 7 Then Res = Res & "," & "D" & i + 9 End If Next Res = Replace(Res, ",", "", 1, 1) Range(Res).Interior.ColorIndex = 6 CreateObject("WScript.Shell").Popup UniConvert(text, "VNI") & Res, , "THÔNG BÁO by H.V", vbOKOnly End Sub
Sub to_mau()
Dim tmp, aData
Dim i, lFirst As Long, n As Long, lR As Long
With Range([D10], [D65536].End(3))
.Font.ColorIndex = 0
lFirst = .Row
aData = .Value
End With
For i = 1 To UBound(aData)
tmp = aData(i, 1)
If VarType(tmp) <> 7 Then
lR = i - 1 + lFirst
Range("D" & lR).Font.ColorIndex = 3
End If
Next
MsgBox "Done!"
End Sub
Mình có đoạn code như sau :
Mã:Sub KTra() Tmparr = Union(Range("A1:A6"), Range("C1:C6")).Value For i = 1 To UBound(Tmparr, 1) Debug.Print Tmparr(i, 2) Next End Sub
F5 báo lỗi Tmparr(i,2) <------ các anh chị trong GPE thích cho mình với
Sub KTra()
Dim tmpArr, i As Long, rng As Range, rSub As Range
Set rng = Union(Range("A1:A6"), Range("C1:C6"))
For Each rSub In rng.[COLOR=#ff0000][B]Areas[/B][/COLOR]
For i = 1 To rSub.Rows.Count
Debug.Print rSub(i, 1)
Next
Next
End Sub
=MOD(RIGHT(C9;2)*1;3)=1
=MOD(RIGHT(C9;2)*1;3)=2
=MOD(RIGHT(C9;2)*1;3)=0
Sub ToMau_C()
Dim i As Long
Dim arrRes, arrSrc, rng As Range
[C9:C10000].Font.ColorIndex = 1
[C9:C10000].Font.Bold = 0
Set rng = Range([A9], [A65536].End(3)).Resize(, 37)
arrSrc = rng.Value
For i = 1 To UBound(arrSrc, 1)
If Right(arrSrc(i, 3), 2) = "01" Or Right(arrSrc(i, 3), 2) = "04" Or Right(arrSrc(i, 3), 2) = "07" Or Right(arrSrc(i, 3), 2) = "10" Then
rng(i, 3).Font.ColorIndex = 5
End If
If Right(arrSrc(i, 3), 2) = "02" Or Right(arrSrc(i, 3), 2) = "05" Or Right(arrSrc(i, 3), 2) = "08" Or Right(arrSrc(i, 3), 2) = "11" Then
rng(i, 3).Font.ColorIndex = 13
End If
If Right(arrSrc(i, 3), 2) = "03" Or Right(arrSrc(i, 3), 2) = "06" Or Right(arrSrc(i, 3), 2) = "09" Or Right(arrSrc(i, 3), 2) = "12" Then
rng(i, 3).Font.ColorIndex = 10
End If
Next i
End Sub
Trước đây em có đặt các công thức dưới đây trong C.F để tô màu:
PHP:=MOD(RIGHT(C9;2)*1;3)=1
PHP:=MOD(RIGHT(C9;2)*1;3)=2
1/ Em muốn thử đưa 3 cthức nói trên vào code nhưng chưa biết bằng cách nào? và nếu đưa vào thì nó có nhanh hơn code dưới không?PHP:=MOD(RIGHT(C9;2)*1;3)=0
2/ Em thấy code trên hơi dài dòng và chậm? có cách nào cải tiến cho nó nhanh hơn không?
Em cảm ơn!
--------
P/s: trong code em có Resize(, 37), mục đích em đang tính cho toàn bảng tính!!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CFval As Integer
If Target.Count = 1 And Intersect(Target, [C:C]) Is Nothing Then
CFval = Val(Right(Range("C" & Target.Row & ""), 2)) Mod 3
Select Case CFval
Case 0
Target.Font.ColorIndex = 3
Case 1
Target.Font.ColorIndex = 5
Case 2
Target.Font.ColorIndex = 10
End Select
End If
End Sub
Chưa Test nên không Ok là đúng rồi bạnKhông hiểu ý bạn thế nào : --> nhưng nếu là mình , mình sẽ thử viết theo cách này ( chưa test, nên hổng biết có ok không )
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim CFval As Integer If Target.Count = 1 And Intersect(Target, [C:C]) Is Nothing Then CFval = Val(Right(Range("C" & Target.Row & ""), 2)) Mod 3 Select Case CFval Case 0 Target.Font.ColorIndex = 3 Case 1 Target.Font.ColorIndex = 5 Case 2 Target.Font.ColorIndex = 10 End Select End If End Sub
...And Intersect(Target, [C:C]) Is Nothing
...Right(Range("C" & Target.Row & ""), 2))....
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CFval As Integer
If Target.Count = 1 And Not Intersect(Target, [C:C]) Is Nothing Then
CFval = Val(Mid(Target, 2)) Mod 3
Select Case CFval
Case 0
Target.Font.ColorIndex = 3
Case 1
Target.Font.ColorIndex = 5
Case 2
Target.Font.ColorIndex = 10
End Select
End If
End Sub
Chưa Test nên không Ok là đúng rồi bạn
1 - Đoạn
Có nghĩa nếu Target là Nothing => Khi thay đổi tại cột C thì vô tác dụngMã:...And Intersect(Target, [C:C]) Is Nothing
................
[/code]
Hong.Van có thể tùy biến cho dữ liệu của mình
Đoạn:^^ cái này thì còn phải tuỳ theo ý đồ của bạn Hồng Vân :
* Vì mình không hiểu điều kiện CF của bạn là tại cột C, hay là tại các ô bất kỳ so với cột C
...And Intersect(Target, [C:C]) Is Nothing
Qua bài này phát hiện ra 1 điều là phương thức Range nếu vượt quá 64 đối số thì phá sản (Office 2010)Phát hiện thêm 1 lỗi: Với dữ liệu khoảng 10,000 dòng thì phép nối chuổi bị phá sản ---> Trường hợp này cứ xử lý cell à chắc ăn nhất:
10,000 dòng cho tốc độ cũng rất nhanhMã:Sub to_mau() Dim tmp, aData Dim i, lFirst As Long, n As Long, lR As Long With Range([D10], [D65536].End(3)) .Font.ColorIndex = 0 lFirst = .Row aData = .Value End With For i = 1 To UBound(aData) tmp = aData(i, 1) If VarType(tmp) <> 7 Then lR = i - 1 + lFirst Range("D" & lR).Font.ColorIndex = 3 End If Next MsgBox "Done!" End Sub
Sub to_mau2()
Dim dl(), i, Res()
[E10:E65536].ClearContents
dl = Range([D10], [D65536].End(3)).Resize(, 2).Value
ReDim Res(1 To UBound(dl), 1 To 1)
For i = 1 To UBound(dl)
If VarType(dl(i, 1)) = 7 Then Res(i, 1) = 1
Next
[E10].Resize(i - 1, 1) = Res
Range([E10], [D65536].End(3).Offset(, 1)).SpecialCells(4).Offset(, -1).Interior.ColorIndex = 6
[E10:E65536].ClearContents
End Sub
SpecialCells cũng nên tránh đối với dữ liệu lớnQua bài này phát hiện ra 1 điều là phương thức Range nếu vượt quá 64 đối số thì phá sản (Office 2010)
Nên mình đành dùng phương án mượn thêm 1 cột phụt tuy hơi rườm rà nhưng vẫn cho 1 tốc độ khá nhanh
PHP:Sub to_mau2() Dim dl(), i, Res() [E10:E65536].ClearContents dl = Range([D10], [D65536].End(3)).Resize(, 2).Value ReDim Res(1 To UBound(dl), 1 To 1) For i = 1 To UBound(dl) If VarType(dl(i, 1)) = 7 Then Res(i, 1) = 1 Next [E10].Resize(i - 1, 1) = Res Range([E10], [D65536].End(3).Offset(, 1)).SpecialCells(4).Offset(, -1).Interior.ColorIndex = 6 [E10:E65536].ClearContents End Sub