Chuyên mục xử lý, gỡ rối code VBA (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,970
Vậy bạn sửa lại thế này xem sao.
Code:
Range("B2", Range("F65000").End(xlUp)).Select

Lọc và lấy số không trùng, Scripting.Dictionnary, Hàm thông dụng,FileSystemObject, Các hàm hữu ích

Gửi anh giaiphap,

Cám ơn đoạn code của anh rất nhiều. Trong trường hợp của mình, đoạn code đã hoạt động hiệu quả, đúng ý mình.

Tuy nhiên, do bảng data mỗi ngày một update, trong bảng data như bên dưới, nếu dùng đoạn code của anh thì chỉ chọn được vùng dữ liệu từ 1A đến 5D thôi, nguyên dòng E không được chọn.
VBA.jpg

Anh có thể hướng dẫn giúp em cách nào để có thể chọn dc toàn bộ vùng dữ liệu màu xanh, bât kể ô cuối cùng ( theo cột và dòng ) của vùng dữ liệu trống hay hay không trống ko ?

Cám ơn anh rất nhiều
 
Upvote 0
Ah mình đã tìm ra được cách rồi. Mình đảo vị trí trong công thức lại như sau

Range("F2", Range("B65000").End(xlUp)).Select

 
Upvote 0
Ah mình đã tìm ra được cách rồi. Mình đảo vị trí trong công thức lại như sau

Range("F2", Range("B65000").End(xlUp)).Select


Cột B trống cũng "tèo"
Thử cái này xem sao:
Mã:
Range("B2:B" & [A65536].End(xlUp).Row).Resize(, [IV1].End(xlToLeft).Column - 1).Select
 
Upvote 0
Ah mình đã tìm ra được cách rồi. Mình đảo vị trí trong công thức lại như sau

Range("F2", Range("B65000").End(xlUp)).Select
Bạn phải sửa lại như vầy mới đúng
Range(Range("IV1").End(xlToLeft).Offset(1,), Range("A65000").End(xlUp).Offset(,1)).Select
 
Upvote 0
Thật sự đoạn code của mình vẫn ok. Mình đã thử, các bạn thử xem. Ô 1B trống ko vấn đề gì

Range("F2", Range("B65000").End(xlUp)).Select

vba.jpg
 
Upvote 0
Cột B trống cũng "tèo"
Thử cái này xem sao:
Code:

Range("B2:B" & [A65536].End(xlUp).Row).Resize(, [IV1].End(xlToLeft).Column - 1).Select

Cách này cũng rất hay vì trong trường hợp của mình, nếu ô 1E trống thì mình phải viết lại công thức, còn của bạn thì ko. Cám ơn bạn rất nhiều
 
Upvote 0
Các bác cho em hỏi chút là: Ta nên dùng: Range(...).ClearContents Hay Range(...) = VbnullString. ​Nó đều xóa dữ liệu nhưng có gì khác nhau về cách sử dụng ko ạ
 
Upvote 0
Topic Những câu hỏi về code, xin giải thích các code... đã quá dài nên mình đóng nó lại và mở topic khác
Tất cả những bài viết liên quan đến việc nhờ giải thích, xử lý và gỡ rối code VBA, các bạn vui lòng đăng tại đây!
Cảm ơn

Em nhờ anh vào đây xem và giúp đỡ em với ạ, có anh huuthang_bd đã viết giúp em rồi nhưng hiện tại còn một số vấn đề chỉnh sửa nhưng anh ấy bận nên chưa thể hoàn thiện hơn được, mong nhận được sự giúp đỡ. Em cũng xin nói rõ hơn là em không biết về VBA nên có gì các anh bỏ quá cho, em xin chân thành cảm ơn: http://www.giaiphapexcel.com/forum/showthread.php?119623-X%C3%A2y-d%E1%BB%B1ng-d%E1%BB%B1-%C3%A1n-Ch%E1%BA%A5m-%C4%91i%E1%BB%83m-thi-%C4%91%E1%BA%A5u-v%C3%B5-thu%E1%BA%ADt-tr%C3%AAn-m%C3%A1y-t%C3%ADnh&p=758193#post758193
 
Upvote 0
Chào A/C và các Bạn!
Hiện tại Em đang tập viết code: Copy công thức, rồi paste dạng Value (nhằm giảm bớt khối công thức khổng lồ cho file và chỉ tính toán khi chạy code)

Ở bảng tính trong file đính kèm những cột tô mầu xanh là những cột có công thức. Em đang muốn thực hiện copy công thức ở dòng số 10, những cột tô mầu xanh. Rồi pase xuống các cột tương ứng từ dòng 11:20 dạng Value

Hiện tại các vùng công thức ko liên nhau, nó cách cột nên Em phải làm 3 code để chạy từng cột một. Em mong A/C và các bạn giúp Em viết code ngắn gọn hơn.
Mong A/C và các Bạn giúp. Em cám ơn!



Đây là code em đang làm. Mong A/C đừng cười ạ

Sub Copy_Paste_ColumnI() 'COPY VA PASTE COT I
On Error Resume Next
Sheet1.Range("I10").Select
Selection.Copy
Sheet1.Range("I11:I20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
End Sub


Sub Copy_Paste_ColumnL() 'COPY VA PASTE COT L
On Error Resume Next
Sheet1.Range("L10").Select
Selection.Copy
Sheet1.Range("L11:L20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
End Sub


Sub Copy_Paste_ColumnO() 'COPY VA PASTE COT O
On Error Resume Next
Sheet1.Range("O10").Select
Selection.Copy
Sheet1.Range("O11:O20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
End Sub


Sub CopyAndPasteFull() 'Làm một bottem trong sheet để bấm
Copy_Paste_ColumnI
Copy_Paste_ColumnL
Copy_Paste_ColumnO
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Giúp mình code tạo chat Box trong mạng LAN

Chào các anh chị:
Mình muốn tạo một chat box bằng file excel (Nếu ok có thể chèn vào add-in) để chat trong mạng LAN
Ý tưởng của mình là sử dụng một file csv để trên server chung lưu nội dung chat.
Hộp thoại chat chỉ hiện thị 200 tin nhắn cuối.
sau 5s nội dung chat lại tự cập nhật mới 1 lần.
Mong anh chị chỉ giùm.!
Xin cảm ơn.!
 

File đính kèm

Upvote 0
Chào A/C và các Bạn!
Hiện tại Em đang tập viết code: Copy công thức, rồi paste dạng Value (nhằm giảm bớt khối công thức khổng lồ cho file và chỉ tính toán khi chạy code)

Ở bảng tính trong file đính kèm những cột tô mầu xanh là những cột có công thức. Em đang muốn thực hiện copy công thức ở dòng số 10, những cột tô mầu xanh. Rồi pase xuống các cột tương ứng từ dòng 11:20 dạng Value

Hiện tại các vùng công thức ko liên nhau, nó cách cột nên Em phải làm 3 code để chạy từng cột một. Em mong A/C và các bạn giúp Em viết code ngắn gọn hơn.
Mong A/C và các Bạn giúp. Em cám ơn!



Đây là code em đang làm. Mong A/C đừng cười ạ

Sub Copy_Paste_ColumnI() 'COPY VA PASTE COT I
On Error Resume Next​
Sheet1.Range("I10").Select​
Selection.Copy​
Sheet1.Range("I11:I20").Select​
Selection.PasteSpecial Paste:=xlPasteFormulas​
End Sub


Sub Copy_Paste_ColumnL() 'COPY VA PASTE COT L
On Error Resume Next
Sheet1.Range("L10").Select
Selection.Copy
Sheet1.Range("L11:L20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas​
End Sub



Sub Copy_Paste_ColumnO() 'COPY VA PASTE COT O
On Error Resume Next
Sheet1.Range("O10").Select
Selection.Copy
Sheet1.Range("O11:O20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas​
End Sub


Sub CopyAndPasteFull() 'Làm một bottem trong sheet để bấm
Copy_Paste_ColumnI
Copy_Paste_ColumnL
Copy_Paste_ColumnO​
End Sub
bạn dùng code
Mã:
Sub CopyAndPasteFull()
Dim j As Integer, cot As Variant
cot = Array("I", "L", "O")
For j = 0 To 2
    Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value = Sheet1.Cells(10, cot(j)).Value
Next j
End Sub
 
Upvote 0
Chào A/C và các Bạn!
Hiện tại Em đang tập viết code: Copy công thức, rồi paste dạng Value (nhằm giảm bớt khối công thức khổng lồ cho file và chỉ tính toán khi chạy code)

Ở bảng tính trong file đính kèm những cột tô mầu xanh là những cột có công thức. Em đang muốn thực hiện copy công thức ở dòng số 10, những cột tô mầu xanh. Rồi pase xuống các cột tương ứng từ dòng 11:20 dạng Value

Hiện tại các vùng công thức ko liên nhau, nó cách cột nên Em phải làm 3 code để chạy từng cột một. Em mong A/C và các bạn giúp Em viết code ngắn gọn hơn.
Mong A/C và các Bạn giúp. Em cám ơn!



Đây là code em đang làm. Mong A/C đừng cười ạ

Sub Copy_Paste_ColumnI() 'COPY VA PASTE COT I
On Error Resume Next
Sheet1.Range("I10").Select
Selection.Copy
Sheet1.Range("I11:I20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
End Sub


Sub Copy_Paste_ColumnL() 'COPY VA PASTE COT L
On Error Resume Next
Sheet1.Range("L10").Select
Selection.Copy
Sheet1.Range("L11:L20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
End Sub


Sub Copy_Paste_ColumnO() 'COPY VA PASTE COT O
On Error Resume Next
Sheet1.Range("O10").Select
Selection.Copy
Sheet1.Range("O11:O20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
End Sub


Sub CopyAndPasteFull() 'Làm một bottem trong sheet để bấm
Copy_Paste_ColumnI
Copy_Paste_ColumnL
Copy_Paste_ColumnO
End Sub
Bạn thử với:
[gpecode=vb]
Sub abc()
With Sheets("Data")
Range("I10:I21").Value = Range("I10:I21").Value
Range("L10:L21").Value = Range("L10:L21").Value
Range("O10:O21").Value = Range("O10:O21").Value
End With
End Sub
[/gpecode]
 
Upvote 0
bạn dùng code
Mã:
Sub CopyAndPasteFull()
Dim j As Integer, cot As Variant
cot = Array("I", "L", "O")
For j = 0 To 2
    Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value = Sheet1.Cells(10, cot(j)).Value
Next j
End Sub

Cám ơn Anh HieuCD nhiều! Anh ơi em chạy thử code. Nhưng chưa được. Nó đang copy công thức và paste luôn dạng Value (Anh giúp Em nó copy công thức ở dòng 10 của các cột có công thức tô mầu xanh. Rồi paste xuống các dòng 11:20 để hiện kết quả, sau đó mới gán sang Value). Anh xem giúp Em với nhé. Nhìn code của Anh ngắn gọn thật.
 
Upvote 0
Bạn thử với:
[gpecode=vb]
Sub abc()
With Sheets("Data")
Range("I10:I21").Value = Range("I10:I21").Value
Range("L10:L21").Value = Range("L10:L21").Value
Range("O10:O21").Value = Range("O10:O21").Value
End With
End Sub
[/gpecode]

Chào bạn Phulien1902! Mình chạy thử code thì nó đang bị copy giá trị của ô có công thức dòng 10 rồi nó paste luôn giá trị đó. Bạn giúp mình copy công thức ở dòng 10 của những cột mầu xanh. Rồi dán xuống dòng 11:20 cho ra kết quả. Rồi gán sang Value. Cám ơn Bạn nhiều!
 
Upvote 0
Em xin gửi lại code của Em. Nó chạy ra kết quả. Nhưng dài quá

Sub Copy_Paste_ColumnI() 'COPY VA PASTE COT I
On Error Resume Next
'Chon vung cong thuc
Sheet1.Range("I10").Select
Selection.Copy
'Chon vung va dan cong thuc
Sheet1.Range("I11:I20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
'Chuyen cong thuc sang Value
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
End Sub


Sub Copy_Paste_ColumnL() 'COPY VA PASTE COT L
'Chon vung cong thuc
Sheet1.Range("L10").Select
Selection.Copy​
'Chon vung va dan cong thuc
Sheet1.Range("L11:L20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas​
'Chuyen cong thuc sang Value
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
End Sub

Sub Copy_Paste_ColumnO() 'COPY VA PASTE COT O
'Chon vung cong thuc
Sheet1.Range("O10").Select
Selection.Copy​
'Chon vung va dan cong thuc
Sheet1.Range("O11:O20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas​
'Chuyen cong thuc sang Value
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
End Sub


Sub CopyAndPasteFull() 'CHAY CHO 3 SUB TREN
Copy_Paste_ColumnI
Copy_Paste_ColumnL
Copy_Paste_ColumnO​
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn thử với:
[gpecode=vb]
Sub abc()
With Sheets("Data")
Range("I10:I21").Value = Range("I10:I21").Value
Range("L10:L21").Value = Range("L10:L21").Value
Range("O10:O21").Value = Range("O10:O21").Value
End With
End Sub
[/gpecode]


Mình dựa theo code của bạn viết, nó cũng chạy được rồi. Các bạn xem có giải pháp nào ngắn gọn và hợp lý hơn. Giúp mình nhé. Sau bao nhiêu lần ko giám học VBA, lần này đành post bài để học hỏi dần từng cái một theo thực tế. Mong các bạn giúp đỡ. Cảm ơn các bạn nhiều!

Sub CopyAndPaste ()
With Sheets("Data")
'Vung cot I
Range("I10").Select
Selection.Copy
Range("I11:I20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
'Vung cot L
Range("L10").Select
Selection.Copy
Range("L11:L20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
'Vung cot O
Range("O10").Select
Selection.Copy
Range("O11:O20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
End With
End Sub
 
Upvote 0
Cám ơn Anh HieuCD nhiều! Anh ơi em chạy thử code. Nhưng chưa được. Nó đang copy công thức và paste luôn dạng Value (Anh giúp Em nó copy công thức ở dòng 10 của các cột có công thức tô mầu xanh. Rồi paste xuống các dòng 11:20 để hiện kết quả, sau đó mới gán sang Value). Anh xem giúp Em với nhé. Nhìn code của Anh ngắn gọn thật.
vậy thì chỉnh lại
Mã:
Sub CopyAndPasteFull()
Dim j As Integer, cot As Variant
cot = Array("I", "L", "O")
For j = 0 To 2
    Sheet1.Cells(10, cot(j)).Copy Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1)
    Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value = Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value
Next j
End Sub
 
Upvote 0
vậy thì chỉnh lại
Mã:
Sub CopyAndPasteFull()
Dim j As Integer, cot As Variant
cot = Array("I", "L", "O")
For j = 0 To 2
    Sheet1.Cells(10, cot(j)).Copy Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1)
    Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value = Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value
Next j
End Sub


Code của Anh ngắn gọn thật. Em cảm ơn Anh Hiếu nhé. Đợt này trong các bài diễn đàn không để nút cám ơn nhỉ? Em tìm mãi mà ko thấy.

Em đọc có một số chỗ muốn hỏi Anh và các bạn. Phần tô mầu đỏ ở dưới, do rất dốt về code, nên em chưa hiểu, có gì buồn cười mong A/C và các bạn thông cảm. hic hic

Sub CopyAndPasteFull()
Dim j As Integer, cot As Variant
'Biến J có phải là ẩn của các cột cần dán công thức?
cot = Array("I", "L", "O")
For j = 0 To 2
'Đoạn J=0 to 2 này em chưa hình dung ra
Sheet1.Cells(10, cot(j)).Copy Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1)
'đoạn này có phải là Copy công thức ở dòng số 10. Nhưng sao có chỗ có số 11 "...Cells(11,cot(j) "... ạ
Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value = Sheet1.Cells(11, cot(j)).Resize(20 - 11 + 1).Value
Next j
End Sub
 
Upvote 0
Mình dựa theo code của bạn viết, nó cũng chạy được rồi. Các bạn xem có giải pháp nào ngắn gọn và hợp lý hơn. Giúp mình nhé. Sau bao nhiêu lần ko giám học VBA, lần này đành post bài để học hỏi dần từng cái một theo thực tế. Mong các bạn giúp đỡ. Cảm ơn các bạn nhiều!

Sub CopyAndPaste ()
With Sheets("Data")
'Vung cot I
Range("I10").Select
Selection.Copy
Range("I11:I20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
'Vung cot L
Range("L10").Select
Selection.Copy
Range("L11:L20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
'Vung cot O
Range("O10").Select
Selection.Copy
Range("O11:O20").Select
Selection.PasteSpecial Paste:=xlPasteFormulas
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues​
End With
End Sub
Bạn xem code này rồi tùy biến cho côn việc của bạn xem sao:
PHP:
Public Sub EPG()
Dim I As Long
For I = 9 To 15 Step 3
    Cells(11, I).Resize(10).FormulaR1C1 = Cells(10, I).FormulaR1C1
    Cells(11, I).Resize(10).Value = Cells(11, I).Resize(10).Value
Next I
End Sub
 
Upvote 0
Chào bạn Phulien1902! Mình chạy thử code thì nó đang bị copy giá trị của ô có công thức dòng 10 rồi nó paste luôn giá trị đó. Bạn giúp mình copy công thức ở dòng 10 của những cột mầu xanh. Rồi dán xuống dòng 11:20 cho ra kết quả. Rồi gán sang Value. Cám ơn Bạn nhiều!
Lúc sáng do đọc không ky bài của bạn, nên nghĩ yêu cầu của bạn là đánh chết số.
Vậy bài toán của bạn là: FillDown Formula và đánh chết số.
Có thể có vài cách, nhưng tôi thấy cách của bạn HieuCD là ngắn gọn, tuy nhiên tôi mượn Code của bạn ấy sửa lại 1 chút như sau:
PHP:
Sub CopyAndPasteFull()
Dim j As Integer, cot As Variant
cot = Array("I", "L", "O")
For j = 0 To 2 
   Sheet1.Cells(10, cot(j)).Copy Sheet1.Cells(11, cot(j)).Resize(10)
    Sheet1.Cells(10, cot(j)).Resize(10).Value = Sheet1.Cells(10, cot(j)).Resize(10).Value
Next j
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem code này rồi tùy biến cho côn việc của bạn xem sao:
PHP:
Public Sub EPG()
Dim I As Long
For I = 9 To 15 Step 3
    Cells(11, I).Resize(10).FormulaR1C1 = Cells(10, I).FormulaR1C1
    Cells(11, I).Resize(10).Value = Cells(11, I).Resize(10).Value
Next I
End Sub

Cám ơn Anh Ba Tê! Em xin phép tập dịch code, và hỏi một số chỗ chưa hiểu. Mong A/C giúp đỡ.

Dim I As Long
For I = 9 To 15 Step 3
'Cho I chạy từ cột 9 tới 15. Step là khoảng cách của các cột là 3 thì chạy code copy paste. Nhưng nếu trường hợp khoảng cách ko đều là 3 cột. Thì mình phải sửa code như thế nào để chạy được nhiều trường hợp Anh nhỉ?
Cells(11, I).Resize(10).FormulaR1C1 = Cells(10, I).FormulaR1C1
Cells(11, I).Resize(10).Value = Cells(11, I).Resize(10).Value
Next I
End Sub
 
Upvote 0
Cám ơn Anh Ba Tê! Em xin phép tập dịch code, và hỏi một số chỗ chưa hiểu. Mong A/C giúp đỡ.

Dim I As Long
For I = 9 To 15 Step 3
'Cho I chạy từ cột 9 tới 15. Step là khoảng cách của các cột là 3 thì chạy code copy paste. Nhưng nếu trường hợp khoảng cách ko đều là 3 cột. Thì mình phải sửa code như thế nào để chạy được nhiều trường hợp Anh nhỉ?
Cells(11, I).Resize(10).FormulaR1C1 = Cells(10, I).FormulaR1C1
Cells(11, I).Resize(10).Value = Cells(11, I).Resize(10).Value
Next I
End Sub

Tạo 1 mảng khai báo các cột cần copy.
Tạo 1 biến khai báo số dòng cần copy.
Tùy nghi sử dụng:
PHP:
Public Sub EPG()
Dim I As Long, J As Long, K As Long, Arr
Arr = Array(9, 12, 15) ' Cac cot can copy cong thuc'
K = 10 'So dong can copy cong thuc'
For I = 0 To UBound(Arr)
    J = Arr(I)
    Cells(11, J).Resize(K).FormulaR1C1 = Cells(10, J).FormulaR1C1
    Cells(11, J).Resize(K).Value = Cells(11, J).Resize(K).Value
Next I
End Sub
 
Upvote 0
Lúc sáng do đọc không ky bài của bạn, nên nghĩ yêu cầu của bạn là đánh chết số.
Vậy bài toán của bạn là: FillDown Formula và đánh chết số.
Có thể có vài cách, nhưng tôi thấy cách của bạn HieuCD là ngắn gọn, tuy nhiên tôi mượn Code của bạn ấy sửa lại 1 chút như sau:
PHP:
Sub CopyAndPasteFull()
Dim j As Integer, cot As Variant
cot = Array("I", "L", "O")
For j = 0 To 2 
   Sheet1.Cells(10, cot(j)).Copy Sheet1.Cells(11, cot(j)).Resize(10)
    Sheet1.Cells(10, cot(j)).Resize(10).Value = Sheet1.Cells(10, cot(j)).Resize(10).Value
Next j
End Sub

Bạn ơi cho mình hỏi chút
For j=0 to 2 'dịch đoạn code này giúp mình với. Cám ơn Bạn!
 
Upvote 0
Tạo 1 mảng khai báo các cột cần copy.
Tạo 1 biến khai báo số dòng cần copy.
Tùy nghi sử dụng:
PHP:
Public Sub EPG()
Dim I As Long, J As Long, K As Long, Arr
Arr = Array(9, 12, 15) ' Cac cot can copy cong thuc'
K = 10 'So dong can copy cong thuc'
For I = 0 To UBound(Arr)
    J = Arr(I)
    Cells(11, J).Resize(K).FormulaR1C1 = Cells(10, J).FormulaR1C1
    Cells(11, J).Resize(K).Value = Cells(11, J).Resize(K).Value
Next I
End Sub

Dạ vâng. Em cám ơn Anh Ba Te!
Em đang bước đầu đến với VBA, nên nhiều cái chưa biết. Ko biết mà ko giám hỏi thì mãi mãi ko biết được. Nên Em Mong các A/C giúp đỡ.
Cảm ơn GPE, Cảm ơn A/C rất nhiều!
 
Upvote 0
Giúp mình tạo button Stop vòng lặp ontime này với..

Mình thử chạy code theo thời gian để hiển thị thời gian.
Nhưng không biết làm thế nào để stop lại.
Anh chị chỉ giúp mình code stop với.!

PHP:
Sub my_onTime()   
 Application.OnTime Now + TimeValue("00:00:1"), "my_Procedure"
End Sub

PHP:
Sub my_Procedure()   
 Range("A1") = Format(Now(), "yyyy mmm d, hh:mm:ss")    
my_onTime
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình thử chạy code theo thời gian để hiển thị thời gian.
Nhưng không biết làm thế nào để stop lại.
Anh chị chỉ giúp mình code stop với.!

PHP:
Sub my_onTime()   
 Application.OnTime Now + TimeValue("00:00:1"), "my_Procedure"
End Sub

PHP:
Sub my_Procedure()   
 Range("A1") = Format(Now(), "yyyy mmm d, hh:mm:ss")    
my_onTime
End Sub
Chép vào một module:
Mã:
Public T As Double
'-------
Sub my_onTime()
    T = Now + TimeValue("0:00:01")
    Application.OnTime EarliestTime:=T, Procedure:="my_Procedure", Schedule:=True
End Sub
'--------
Sub sStop() 'Assign cho nút Stop.
    On Error Resume Next
    Application.OnTime EarliestTime:=T, Procedure:="my_Procedure", Schedule:=False
End Sub
'--------
Sub my_Procedure()
    Sheet1.Range("A1") = Format(Now(), "yyyy mmm d, hh:mm:ss")
    my_onTime
End Su
Chép vào ThisWorkbook:
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
sStop
End Sub
 
Upvote 0
Em xin mạn phép gửi nội dung này sang bên chuyên mục này để nhờ các anh sửa giúp:
------------------------
Sau khi em test thử file của anh huuthang_bd (dưới file đính kèm) thì có một số vấn đề sau ạ, và mong các anh ai có thời gian thì chỉnh sửa code giúp em với:
1. Lỗi: Thời gian nghỉ giữa 2 Hiệp khi đang chạy mà nhấn Enter thì lại chạy lại từ đầu như kiểu reset ấy ạ. Lỡ may mà nhấn Enter phát thì thời gian nhỉ lại chạy dài thêm mất.
2. Thêm: một số nút nhấn trực tiếp trên bảng điểm như hình dưới ạ:
- 2 nút cộng và trừ ở mục Nhắc nhở. Phần này sẽ bỏ phím tắt 5 và 0 đi ạ, thay vào đó sẽ nhấn trực tiếp trên bảng chấm điểm. Mỗi lần nhấn là cộng là 1 lần nhắc nhở, nút trừ để phòng khi số lần nhắc nhở bị nhầm và cũng trừ đi 1. Luật nhắc nhở vẫn vậy: 3 lần nhắc nhở tương đương 1 lần cảnh cáo và trừ 1 điểm, 6 lần nhắc nhở tương đương 2 lần cảnh cáo trừ 2 điểm, 9 lần nhắc nhở tương đương 3 lần cảnh cáo trừ 3 điểm và truất quyền thi đấu.
- 2 nút cộng trừ ở mục Điểm. Phần này để cộng hoặc trừ điểm VĐV khi trọng tài chính quyết định, mỗi lần nhấn tương đương cộng 1 điểm hoặc trừ 1 điểm, và cũng để phòng khi số điểm lớn được chỉnh sửa lại cho chính xác theo quyết định trọng tài chính.


- Phím Enter để bắt đầu trận đấu, nhờ các anh thêm phím "dấu cách" để dừng hoặc tiếp tục trận đấu khi trận đấu đang diễn ra ạ.
3. Thay đổi các phím tắt bấm điểm cho VĐV:
- "Như hiện tại thì hình dung tay cầm bấm nút có 2 nút: khi VĐV xanh hoặc đỏ được 1 điểm thì trọng tài bấm nút xanh hoặc đỏ 1 lần, khi được 2 điểm thì bấm đúp nút xanh hoặc đỏ 2 lần."
- Bây giờ thay đổi tay cầm bấm nút có 4 nút như hình thế này:

Mô tả:
- Mỗi tay cầm có 2 nút xanh và 2 nút đỏ. Xanh có: một nút 1 điểm và 1 nút 2 điểm. Đỏ có: 1 nút 1 điểm và 1 nút 2 điểm => Tổng 16 nút bấm cho 4 tay cầm.
- Gán vào các phím tắt trên bàn phím như hình trên:
+ Tay cầm 1: Đỏ: 1 điểm = phím 0, 2 điểm = phím 1. Xanh: 1 điểm = phím 2, 2 điểm = phím 3.
+ Tay cầm 2: Đỏ: 1 điểm = phím 4, 2 điểm = phím 5. Xanh: 1 điểm = phím 6, 2 điểm = phím 7.
+ Tay cầm 3: Đỏ: 1 điểm = phím 8, 2 điểm = phím 9. Xanh: 1 điểm = phím F1, 2 điểm = phím F2.
+ Tay cầm 4: Đỏ: 1 điểm = phím F3, 2 điểm = phím F4. Xanh: 1 điểm = phím F5, 2 điểm = phím F6.
- Việc thêm nút ở tay cầm và gán tất cả các nút vào phím tắt trên bàn phím để thay thế việc nhấn đúp 2 lần khi cho 2 điểm, tránh trường hợp nhấn đúp không thành công.
- Vấn đề 4 ô: 1, 2, 3, 4 ở dọc 2 bên điểm lớn vẫn sáng khi trọng tài bấm nút 1 điểm hoặc 2 điểm ạ. Vấn đề này để xác định trọng tài nào nhấn nút và trọng tài nào không nhấn nút ạ.
--------------------
Vì em không hiểu gì về code VBA cả nên rất mong nhận được sự giúp đỡ của các anh. Cảm ơn ạ!
 

File đính kèm

Upvote 0
Tạo 1 mảng khai báo các cột cần copy.
Tạo 1 biến khai báo số dòng cần copy.
Tùy nghi sử dụng:
PHP:
Public Sub EPG()
Dim I As Long, J As Long, K As Long, Arr
Arr = Array(9, 12, 15) ' Cac cot can copy cong thuc'
K = 10 'So dong can copy cong thuc'
For I = 0 To UBound(Arr)
    J = Arr(I)
    Cells(11, J).Resize(K).FormulaR1C1 = Cells(10, J).FormulaR1C1
    Cells(11, J).Resize(K).Value = Cells(11, J).Resize(K).Value
Next I
End Sub

Em muốn bổ sung thêm thông tin chỉ định sheet cần thực hiện vào trong code trên. Để code chạy đúng sheet mình cần. Mọng A/C và các bạn giúp đỡ.
 
Lần chỉnh sửa cuối:
Upvote 0
PHP Code:
Public Sub EPG()
Dim I As Long, J As Long, K As Long, Arr
Arr
= Array(9, 12, 15) ' Cac cot can copy cong thuc'
K = 10 'So dong can copy cong thuc'
For I = 0 To UBound(Arr)
J = Arr(I)
Cells(11, J).Resize(K).FormulaR1C1 = Cells(10, J).FormulaR1C1
Cells
(11, J).Resize(K).Value = Cells(11, J).Resize(K).Value
Next I
End Sub

Em muốn bổ sung thêm thông tin chỉ định sheet cần thực hiện vào trong code trên. Để code chạy đúng sheet mình cần. Mọng A/C và các bạn giúp đỡ.

Em cho thêm tên sheet vào như này code đã chạy được. Trong trường hợp button ở sheet khác quên ko sửa đường dẫn code, thì nó chỉ chạy ở đúng sheet mình đã mặc định.

PHP Code:
Public Sub EPG()
Dim I As Long, J As Long, K As Long, Arr
Arr
= Array(9, 12, 15)
K = 10
For I = 0 To UBound(Arr)
J = Arr(I)
Sheet1.Cells(11, J).Resize(K).FormulaR1C1 =
Sheet1.Cells(10, J).FormulaR1C1
Sheet1.Cells(11, J).Resize(K).Value = Sheet1.Cells(11, J).Resize(K).Value
Next I
End Sub
 
Upvote 0
Đánh tiếng việt trong textbox và label

Chào mọi người.
Mình làm hộp thoại chat nhưng bị lỗi font khi đánh tiếng việt.
Mong mọi người sửa giùm..!

Mã:
Private Sub CommandButton1_Click()Dim Text, Data, file As String
Dim fileNo As Integer


file = "C:\text.csv"
' Luu text len server
Text = TextBox1.Value
Open file For Output As #1
Print #1, Text
Close #1
TextBox1.Value = ""


' print ra man hinh
fileNo = FreeFile
Open file For Input As #fileNo
Data = Input$(LOF(fileNo), fileNo)
Close #fileNo
Label1.Caption = Data
TextBox1.SetFocus
End Sub
 

File đính kèm

Upvote 0
Chào mọi người.
Mình làm hộp thoại chat nhưng bị lỗi font khi đánh tiếng việt.
Mong mọi người sửa giùm..!

Mã:
Private Sub CommandButton1_Click()Dim Text, Data, file As String
Dim fileNo As Integer


file = "C:\text.csv"
' Luu text len server
Text = TextBox1.Value
Open file For Output As #1
Print #1, Text
Close #1
TextBox1.Value = ""


' print ra man hinh
fileNo = FreeFile
Open file For Input As #fileNo
Data = Input$(LOF(fileNo), fileNo)
Close #fileNo
Label1.Caption = Data
TextBox1.SetFocus
End Sub

đọc file tiếng Việt

Mã:
Public Function ReadText(ByVal filename As String)
With CreateObject("ADODB.Stream")
    .Open
    .Type = 2
    .Charset = "UTF-8"
    .LoadFromFile filename
    ReadText = .ReadText
    .Close
End With
End Function

ghi file tiếng Việt
Mã:
Public Sub SaveFile(filename As String, content As String)
With CreateObject("ADODB.Stream")
    .Open
    .Type = 2
    .Charset = "UTF-8"
    .WriteText content
    .SaveToFile filename, 2
    .Close
End With
End Sub
 
Upvote 0
đọc file tiếng Việt

Mã:
Public Function ReadText(ByVal filename As String)
With CreateObject("ADODB.Stream")
    .Open
    .Type = 2
    .Charset = "UTF-8"
    .LoadFromFile filename
    ReadText = .ReadText
    .Close
End With
End Function

ghi file tiếng Việt
Mã:
Public Sub SaveFile(filename As String, content As String)
With CreateObject("ADODB.Stream")
    .Open
    .Type = 2
    .Charset = "UTF-8"
    .WriteText content
    .SaveToFile filename, 2
    .Close
End With
End Sub

Cảm ơn bạn nhiều nhé.!
 
Upvote 0
Cho em hỏi code sau:

Option Explicit

Public Sub CONG_OVT_new()
Dim Dic As Object, Col As Object, Ws As Worksheet, Tem As String, Rws As Long
Dim sArr(), dArr(1 To 5000, 1 To 38), I As Long, J As Long, K As Long, C As Long
Set Dic = CreateObject("Scripting.Dictionary")
Set Col = CreateObject("Scripting.Dictionary")
With Sheets("T12.2016")
sArr = .Range("b7").Resize(, 38).Value
For J = 1 To 38
If sArr(1, J) <> Empty Then
If IsDate(sArr(1, J)) Then Col.Item(Day(sArr(1, J))) = J
End If
Next J
End With
For Each Ws In Worksheets
If Ws.Name <> "MAU" And Ws.Name <> "Reporst all 12 total" And Ws.Name <> "REPORT" And Ws.Name <> "T12.2016.ovt" And Ws.Name <> "T12.2016" And Ws.Name <> "Check" Then
C = Col.Item(Val(Ws.Name))
sArr = Ws.Range("C9", Ws.Range("C9").End(xlDown)).Resize(, 37).Value
For I = 1 To UBound(sArr)
Tem = sArr(I, 1)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = sArr(I, 1)
End If
Rws = Dic.Item(Tem)
dArr(Rws, C) = sArr(I, 20)

Next I
End If
Next Ws
Sheets("T12.2016").Range("b8").Resize(K, 36) = dArr
Set Dic = Nothing
Set Col = Nothing
End Sub

Ở dòng lệnh cuối copy mảng vào Sheets("T12.2016").Range("b8").Resize(K, 36) = dArr

Trường hợp nếu Em tách Sheets("T12.2016") thành riêng một file có tên là Report, tên sheet vẫn không đổi là "T12.2016" thì em phải sửa câu lệnh như thế nào để sau khi tổng hợp số liệu xong sẽ chuyển dữ liệu mảng dArr vào file Report này.

Em cảm ơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Cho em hỏi code sau:
Ở dòng lệnh cuối copy mảng vào Sheets("T12.2016").Range("b8").Resize(K, 36) = dArr
Bây giờ giả sử em muốn tách sheet trên thành một file riêng biệt thì câu lệnh để gán mảng vào file ấy phải thay đổi như thế nào ạ? Mọi thứ giữ nguyên chỉ có thay đổi là di rời sheet thành một file khác.

Em cảm ơn.

Tách sheet/ Di rời thì dùng lệnh copy/move sheet.
Có vẻ yêu cầu không phải thế.
Dán kết quả mảng dArr vào một sheet của 1 workbook (file excel) khác thì:
Gọi workbook đó lên rồi gán dArr vào sheet chỉ định.
 
Upvote 0
Tách sheet/ Di rời thì dùng lệnh copy/move sheet.
Có vẻ yêu cầu không phải thế.
Dán kết quả mảng dArr vào một sheet của 1 workbook (file excel) khác thì:
Gọi workbook đó lên rồi gán dArr vào sheet chỉ định.

Mình sửa như thế này mà không được nhỉ?

Application.Workbooks(“T12.2016”).Worksheets( “T12.2016”).Range("b8").Resize(K, 36) = dArr
 
Upvote 0
Trước tiên, bạn cần sửa lại yêu cầu của bạn đã. Bạn biểu đạt làm sao để người khác hiểu trúng yêu cầu của mình. Tôi mới chỉ là đoán ý theo bài #647.

Befaint đoán đúng ý mính rồi. Ban đầu lệnh để chuyển dữ liệu mảng vào sheet trong chính file đó. Nhưng nếu chuyển dữ liệu mảng đó vào một file khác thì thay đổi như thế nào?
 
Lần chỉnh sửa cuối:
Upvote 0
À được rồi cảm ơn Befaint nhé, hóa ra khi chạy lệnh phải acticve file Gốc (file số 1), mình active file chuyển đến (File số 2) chạy toàn báo lỗi.
 
Upvote 0
Nhờ tối ưu đoạn code paste special

Mình có 1 đoạn code hoàn chỉnh tuy nhiên cần tối ưu nên nhờ các bạn giúp đỡ

======
Sub chay()
Dim dongcuoi1 As Long
Dim dongcuoi2 As Long
dongcuoi1 = Worksheets("0").Range("P" & Rows.Count).End(xlUp).Row
Range("D2:O2").Select
Selection.AutoFill Destination:=Range("D2:O" & dongcuoi1)
Columns("D:F").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False
Range([F2], [F1048576].End(xlUp)).Copy [C2]
Range([E2], [E1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)
Range([D2], [D1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)
Range([C2], [C1048576].End(xlUp)).RemoveDuplicates Columns:=1
dongcuoi2 = Worksheets("0").Range("C2").End(xlDown).Row
Range("A2:B2").Select
Selection.AutoFill Destination:=Range("A2:B" & dongcuoi2&)
Cells.Select
ActiveWorkbook.Save
Range("A1").Select
Range("A1", Range("A2").End(xlDown)).Select
Selection.Copy
End Sub
======
Ở phần code này(bên dưới):
=====
Columns("D:F").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False
Range([F2], [F1048576].End(xlUp)).Copy [C2]
Range([E2], [E1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)
Range([D2], [D1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)

=====
Mình đang thực hiện select từ cột D đến cột F sau đó thực hiện Copy Paste Special Values lại rồi mới thực hiện nhập các dữ liệu có ở cột D, cột E, Cột F lại vào chung cột C
mình muốn cái tiến việc này bằng cách bỏ việc phải Copy Paste Special Values ở cột D đến F đi mà thực hiện nhập dữ liệu có ở cột D, E, F vào cột C luôn với việc khi paste sẽ là Paste Special Values
Anh em giúp mình với.
 

File đính kèm

Upvote 0
Em xin mạn phép gửi nội dung này sang bên chuyên mục này để nhờ các anh sửa giúp:
------------------------
Sau khi em test thử file của anh huuthang_bd (dưới file đính kèm) thì có một số vấn đề sau ạ, và mong các anh ai có thời gian thì chỉnh sửa code giúp em với:
1. Lỗi: Thời gian nghỉ giữa 2 Hiệp khi đang chạy mà nhấn Enter thì lại chạy lại từ đầu như kiểu reset ấy ạ. Lỡ may mà nhấn Enter phát thì thời gian nhỉ lại chạy dài thêm mất.
2. Thêm: một số nút nhấn trực tiếp trên bảng điểm như hình dưới ạ:
- 2 nút cộng và trừ ở mục Nhắc nhở. Phần này sẽ bỏ phím tắt 5 và 0 đi ạ, thay vào đó sẽ nhấn trực tiếp trên bảng chấm điểm. Mỗi lần nhấn là cộng là 1 lần nhắc nhở, nút trừ để phòng khi số lần nhắc nhở bị nhầm và cũng trừ đi 1. Luật nhắc nhở vẫn vậy: 3 lần nhắc nhở tương đương 1 lần cảnh cáo và trừ 1 điểm, 6 lần nhắc nhở tương đương 2 lần cảnh cáo trừ 2 điểm, 9 lần nhắc nhở tương đương 3 lần cảnh cáo trừ 3 điểm và truất quyền thi đấu.
- 2 nút cộng trừ ở mục Điểm. Phần này để cộng hoặc trừ điểm VĐV khi trọng tài chính quyết định, mỗi lần nhấn tương đương cộng 1 điểm hoặc trừ 1 điểm, và cũng để phòng khi số điểm lớn được chỉnh sửa lại cho chính xác theo quyết định trọng tài chính.


- Phím Enter để bắt đầu trận đấu, nhờ các anh thêm phím "dấu cách" để dừng hoặc tiếp tục trận đấu khi trận đấu đang diễn ra ạ.
3. Thay đổi các phím tắt bấm điểm cho VĐV:
- "Như hiện tại thì hình dung tay cầm bấm nút có 2 nút: khi VĐV xanh hoặc đỏ được 1 điểm thì trọng tài bấm nút xanh hoặc đỏ 1 lần, khi được 2 điểm thì bấm đúp nút xanh hoặc đỏ 2 lần."
- Bây giờ thay đổi tay cầm bấm nút có 4 nút như hình thế này:

Mô tả:
- Mỗi tay cầm có 2 nút xanh và 2 nút đỏ. Xanh có: một nút 1 điểm và 1 nút 2 điểm. Đỏ có: 1 nút 1 điểm và 1 nút 2 điểm => Tổng 16 nút bấm cho 4 tay cầm.
- Gán vào các phím tắt trên bàn phím như hình trên:
+ Tay cầm 1: Đỏ: 1 điểm = phím 0, 2 điểm = phím 1. Xanh: 1 điểm = phím 2, 2 điểm = phím 3.
+ Tay cầm 2: Đỏ: 1 điểm = phím 4, 2 điểm = phím 5. Xanh: 1 điểm = phím 6, 2 điểm = phím 7.
+ Tay cầm 3: Đỏ: 1 điểm = phím 8, 2 điểm = phím 9. Xanh: 1 điểm = phím F1, 2 điểm = phím F2.
+ Tay cầm 4: Đỏ: 1 điểm = phím F3, 2 điểm = phím F4. Xanh: 1 điểm = phím F5, 2 điểm = phím F6.
- Việc thêm nút ở tay cầm và gán tất cả các nút vào phím tắt trên bàn phím để thay thế việc nhấn đúp 2 lần khi cho 2 điểm, tránh trường hợp nhấn đúp không thành công.
- Vấn đề 4 ô: 1, 2, 3, 4 ở dọc 2 bên điểm lớn vẫn sáng khi trọng tài bấm nút 1 điểm hoặc 2 điểm ạ. Vấn đề này để xác định trọng tài nào nhấn nút và trọng tài nào không nhấn nút ạ.
--------------------
Vì em không hiểu gì về code VBA cả nên rất mong nhận được sự giúp đỡ của các anh. Cảm ơn ạ!

Nhờ các bác giành thời gian hỗ trợ giúp đỡ em với ạ!
 
Upvote 0
Mình có 1 đoạn code hoàn chỉnh tuy nhiên cần tối ưu nên nhờ các bạn giúp đỡ

======
Sub chay()
Dim dongcuoi1 As Long
Dim dongcuoi2 As Long
dongcuoi1 = Worksheets("0").Range("P" & Rows.Count).End(xlUp).Row
Range("D2:O2").Select
Selection.AutoFill Destination:=Range("D2:O" & dongcuoi1)
Columns("D:F").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False
Range([F2], [F1048576].End(xlUp)).Copy [C2]
Range([E2], [E1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)
Range([D2], [D1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)
Range([C2], [C1048576].End(xlUp)).RemoveDuplicates Columns:=1
dongcuoi2 = Worksheets("0").Range("C2").End(xlDown).Row
Range("A2:B2").Select
Selection.AutoFill Destination:=Range("A2:B" & dongcuoi2&)
Cells.Select
ActiveWorkbook.Save
Range("A1").Select
Range("A1", Range("A2").End(xlDown)).Select
Selection.Copy
End Sub
======
Ở phần code này(bên dưới):
=====
Columns("D:F").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False
Range([F2], [F1048576].End(xlUp)).Copy [C2]
Range([E2], [E1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)
Range([D2], [D1048576].End(xlUp)).Copy [C1048576].End(xlUp).Offset(1)

=====
Mình đang thực hiện select từ cột D đến cột F sau đó thực hiện Copy Paste Special Values lại rồi mới thực hiện nhập các dữ liệu có ở cột D, cột E, Cột F lại vào chung cột C
mình muốn cái tiến việc này bằng cách bỏ việc phải Copy Paste Special Values ở cột D đến F đi mà thực hiện nhập dữ liệu có ở cột D, E, F vào cột C luôn với việc khi paste sẽ là Paste Special Values
Anh em giúp mình với.
Bạn thế bằng đoạn code
Mã:
[C2].Resize(Range([F2], [F1048576].End(xlUp)).Rows.Count).Value = Range([F2], [F1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([E2], [E1048576].End(xlUp)).Rows.Count).Value = Range([E2], [E1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([D2], [D1048576].End(xlUp)).Rows.Count).Value = Range([D2], [D1048576].End(xlUp)).Value
 
Upvote 0
Chào các anh (chị) hiện nay em có 1 đoạn mã VBA đã viết (nói chung là chạy tốt) nhưng do số liệu bảng tra quá dài (trên 50000 dòng) nên đoạn code phát huy không hiệu quả.
Chạy rất chậm và bị giật.
Nhờ các anh chị chỉnh lại giúp em đoạn code sau. Em xin chân thành cám ơn

Sub bienban()
On Error Resume Next
Dim sh1 As Worksheet ' Sheet DMCVNT
Dim Rng1 As Range
Dim STT_BBNT As Range
Dim STT_BB As Range
Dim STT_BBCV As Range
Dim VT_DTNT As Range
Dim VT_NDTCV As Range
Dim VT_TCV As Range
Dim VT_TCAD As Range
Dim VT_KTCV As Range
Dim sodongcp As Integer
Dim I As Integer
Dim bb As Integer
Dim SoBienBan As Integer
For bb = 1 To DMCVNT.Range("SoBB") 'So bien ban
Application.Interactive = False
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlManual
MBBNTNBCV.Copy before:=Sheets(bb)
Range("K5") = bb
'*******Dua so lieu tu bang Danh muc cong viec nghiem thu sang Bien ban nghiem thu ***************
Set STT_BB = Range("K5")
Set VT_DTNT = Sheets(bb).Cells.Find(What:="dtnt", After:=ActiveCell, LookIn:=xlComments, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Set VT_TCV = Sheets(bb).Cells.Find(What:="TCV", After:=ActiveCell, LookIn:=xlComments, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Set VT_NDTCV = Sheets(bb).Cells.Find(What:="NDKT", After:=ActiveCell, LookIn:=xlComments, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Set VT_TCAD = Sheets(bb).Cells.Find(What:="TCAD", After:=ActiveCell, LookIn:=xlComments, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Set VT_KTCV = Sheets(bb).Cells.Find(What:="KTCV", After:=ActiveCell, LookIn:=xlComments, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Set Rng1 = Range(DMCVNT.[A6], DMCVNT.[A65500].End(xlUp))
Set STT_BBCV = Rng1.Find(STT_BB, , xlFormulas, xlWhole)
If STT_BBCV Is Nothing Then
VT_DTNT.Offset(0, 0).Font.ColorIndex = 3
Else
'Chen dong bien ban
Range(STT_BBCV.Offset(0, 17), STT_BBCV.End(xlDown).Offset(-1, 50)).Copy
VT_DTNT.Offset(1, 0).EntireRow.Insert
Range(STT_BBCV.Offset(0, 17), STT_BBCV.End(xlDown).Offset(-1, 50)).Copy
VT_TCV.Offset(1, 0).EntireRow.Insert
Range(STT_BBCV.Offset(0, 17), STT_BBCV.End(xlDown).Offset(-2, 50)).Copy
VT_TCAD.Offset(1, 0).EntireRow.Insert
Range(STT_BBCV.Offset(0, 17), STT_BBCV.End(xlDown).Offset(-1, 50)).Copy
VT_NDTCV.Offset(1, 0).EntireRow.Insert
'Copy so thu tu
Range(STT_BBCV.Offset(0, 1), STT_BBCV.End(xlDown).Offset(-1, 1)).Copy
VT_DTNT.Offset(1, 0).PasteSpecial (xlPasteValues)
VT_TCAD.Offset(1, 0).PasteSpecial (xlPasteValues)
VT_NDTCV.Offset(1, 0).PasteSpecial (xlPasteValues)
VT_TCV.Offset(1, 0).PasteSpecial (xlPasteValues)
'Ma hieu cong viec
Range(STT_BBCV.Offset(0, 2), STT_BBCV.End(xlDown).Offset(-2, 2)).Copy
VT_TCAD.Offset(1, -2).PasteSpecial (xlPasteValues)
VT_TCAD.Offset(1, 14).PasteSpecial (xlPasteValues)
VT_NDTCV.Offset(1, -3).PasteSpecial (xlPasteValues)
'Copy ten cong viec
Range(STT_BBCV.Offset(0, 3), STT_BBCV.End(xlDown).Offset(-1, 3)).Copy
VT_DTNT.Offset(1, 1).PasteSpecial (xlPasteValues)
VT_TCV.Offset(1, 1).PasteSpecial (xlPasteValues)
VT_NDTCV.Offset(1, 1).PasteSpecial (xlPasteValues)
VT_TCAD.Offset(1, 1).PasteSpecial (xlPasteValues)
'Copy don vi
Range(STT_BBCV.Offset(0, 4), STT_BBCV.End(xlDown).Offset(-1, 4)).Copy
VT_TCV.Offset(1, 8).PasteSpecial (xlPasteValues)
'Khoi luong cong viec
Range(STT_BBCV.Offset(0, 5), STT_BBCV.End(xlDown).Offset(-2, 5)).Copy
VT_TCV.Offset(1, 9).PasteSpecial (xlPasteValues)
Range(STT_BBCV.Offset(0, 6), STT_BBCV.End(xlDown).Offset(-2, 6)).Copy
VT_TCV.Offset(1, 11).PasteSpecial (xlPasteValues)
'Ke bang noi dung kiem tra
Range(VT_NDTCV.Offset(0, 1), VT_TCV.Offset(-3, 12)).Select
End If

'Dien ki hieu nhan biet noi dung kiem tra ten cong viec
For I = 11 To 500
If Cells(I, "A") <> "" Then
Cells(I, "B") = ":" & Cells(I, "A")
End If
Next I
'***** Chen cac noi dung tieu chuan va noi dung kiem tra cong viec ******
' Khai báo
Range("B7").End(xlDown).Select
Dim Sh As Worksheet, Rng As Range, sRng As Range, XX As Range
Set Sh = Workbooks("TCVN.xla").Worksheets("TCNTCV")
Set Rng = Sh.Range(Sh.[C2], Sh.[C65500].End(xlUp))


'Tra du lieu tao bang CMPT
Do Until Selection = ""
Set XX = Selection
Set sRng = Rng.Find(XX, , xlFormulas, xlWhole)
If sRng Is Nothing Then
Selection.Font.ColorIndex = 3
Selection.Offset(1, 0).Select
Selection.EntireRow.Insert
Selection.End(xlDown).Select
Else
Range(sRng.Offset(0, 0), sRng.End(xlDown).Offset(-1, 0)).EntireRow.Copy
Selection.Offset(1, -1).Insert Shift:=xlDown
Selection.ClearContents
Selection.End(xlDown).Select
End If
Loop
Application.CutCopyMode = False
Range("A1").Select
Sheets(bb).Name = "NTNBCV" & bb
'Dinh dang bang bieu
Dim x As Integer
For x = 11 To 500
If Cells(x, "A") <> "" Then
Range(Cells(x, "D"), Cells(x, "P")).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.WrapText = True
.MergeCells = False
.Font.Bold = True
.Font.Italic = True
End With
End If
If Cells(x, "R") <> "" Then
Cells(x, "D").Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
.WrapText = True
'.Font.Bold = True
.Font.Italic = True
End With
Range(Cells(x, "E"), Cells(x, "P")).Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = True
.MergeCells = True
'.Font.Bold = True
.Font.Italic = True
End With
End If


'Ke bang khoi luong
Range(VT_TCV.Offset(1, 0), VT_KTCV.Offset(-2, 0)).Select
With Selection
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlHairline
End With
Selection.NumberFormat = "General"
'Ke chan bang noi dung nghiem thu
Range(VT_TCV.Offset(-4, 0), VT_TCV.Offset(-4, 12)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlHairline
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("D1").Select
Next x
'Tao bien ban tiep theo
Next bb
Application.Interactive = True
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Sheets(1).Select
Set STT_BB = Nothing
Set VT_DTNT = Nothing
Set VT_TCV = Nothing
Set VT_NDTCV = Nothing
Set VT_TCAD = Nothing
Set Rng1 = Nothing
Set STT_BBCV = Nothing
Set Sh = Nothing
Set Rng = Nothing
Set XX = Nothing
Set sRng = Nothing
End Sub
 
Upvote 0
Nhờ các anh bổ xung phím "dấu cách" để dừng và tiếp tục thời gian thi đấu với ạ:
----------------------------
Cái này bên Module:
Private Sub DisplayTimer()
Dim i As Long
If Min = 0 And Sec <= 1 Then
Display_Off
SubBeep
iArrTimeInfo = iArrTimeInfo + 1
If iArrTimeInfo <= UBound(ArrTimeInfo, 2) Then
BangDiem.LB_ThoiGian.Caption = ArrTimeInfo(1, iArrTimeInfo) & ":" & Format(ArrTimeInfo(2, iArrTimeInfo), "00")
If Round(iArrTimeInfo Mod 2, 0) = 0 Then
Display_On
Else
BangDiem.LB_Hiep.Caption = ThongTin.Range(Hiep).Value & " " & Round((iArrTimeInfo + 1) / 2, 0)
BangDiem.LB_TrangThai.Caption = ThongTin.Range(SanSang).Value
End If
Else
BangDiem.LB_ThoiGian.Caption = "0:00"
BangDiem.LB_TrangThai.Caption = ThongTin.Range(KetThuc).Value
BangDiem.CB_DangThiDau.Value = False
End If
Exit Sub
ElseIf Sec = 0 And Min > 0 Then
Sec = 59: Min = Min - 1
Else
Sec = Sec - 1
End If
BangDiem.LB_ThoiGian.Caption = Min & ":" & Format(Sec, "00")
End Sub
-------------------------------
Cái này là bên Forms: (đã gán nhấn phím Enter (13) chạy thời gian rồi).
Private Sub TB_NhanTinHieu_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Not Me.CB_DangThiDau.Value Then
If KeyCode = 13 Then
If iArrTimeInfo <= UBound(ArrTimeInfo, 2) Then
Me.CB_DangThiDau.Value = True
Display_On
End If
End If
End If
Select Case KeyCode
Case TT1D
Me.LB_TT1_Do.BackColor = BackColor0
Case TT2D
Me.LB_TT2_Do.BackColor = BackColor0
Case TT3D
Me.LB_TT3_Do.BackColor = BackColor0
Case TT4D
Me.LB_TT4_Do.BackColor = BackColor0
Case TT1X
Me.LB_TT1_Xanh.BackColor = BackColor0
Case TT2X
Me.LB_TT2_Xanh.BackColor = BackColor0
Case TT3X
Me.LB_TT3_Xanh.BackColor = BackColor0
Case TT4X
Me.LB_TT4_Xanh.BackColor = BackColor0
Case 27
Unload Me
End Select
KeyCode = 0
End Sub
--------------------------
Em không biết về code VBA nên nếu cần rõ hơn các anh lấy file về xem cho kỹ ở bài #640.
Rất mong các anh bớt chút thời gian giúp đỡ ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thế bằng đoạn code
Mã:
[C2].Resize(Range([F2], [F1048576].End(xlUp)).Rows.Count).Value = Range([F2], [F1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([E2], [E1048576].End(xlUp)).Rows.Count).Value = Range([E2], [E1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([D2], [D1048576].End(xlUp)).Rows.Count).Value = Range([D2], [D1048576].End(xlUp)).Value

Mình không thấy nút thank để gửi bạn một Like!. Cám ơn bạn rất nhiều.
 
Upvote 0
Giúp tối ưu thêm lần nữa

Mình muốn tối ưu thêm ở đoạn code này
=======
dongcuoi1 = Worksheets("0").Range("Z" & Rows.Count).End(xlUp).Row
Range("D2:O2").Select
Selection.AutoFill Destination:=Range("D2:O" & dongcuoi1)
=====

mình đang sử dụng số dòng tại cột Z để làm căn cứ cho lệnh autofill ở dưới tuy nhiên mình muốn so sánh thêm giữa 3 cột là cột P, cột U và cột Z, cột nào có số dòng lớn nhất thì sẽ căn cứ vào số dòng của cột đó mà autofill
Bạn giúp mình với


=======================
Sub chay()
Dim dongcuoi1 As Long
Dim dongcuoi2 As Long
dongcuoi1 = Worksheets("0").Range("Z" & Rows.Count).End(xlUp).Row
Range("D2:O2").Select
Selection.AutoFill Destination:=Range("D2:O" & dongcuoi1)
[C2].Resize(Range([F2], [F1048576].End(xlUp)).Rows.Count).Value = Range([F2], [F1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([E2], [E1048576].End(xlUp)).Rows.Count).Value = Range([E2], [E1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([D2], [D1048576].End(xlUp)).Rows.Count).Value = Range([D2], [D1048576].End(xlUp)).Value
Range([C2], [C1048576].End(xlUp)).RemoveDuplicates Columns:=1
dongcuoi2 = Worksheets("0").Range("C2").End(xlDown).Row
Range("A2:B2").Select
Selection.AutoFill Destination:=Range("A2:B" & dongcuoi2&)
Cells.Select
ActiveWorkbook.Save
Range("A1").Select
Range("A1", Range("A2").End(xlDown)).Select
Selection.Copy
End Sub
 
Upvote 0
mình đang sử dụng số dòng tại cột Z để làm căn cứ cho lệnh autofill ở dưới tuy nhiên mình muốn so sánh thêm giữa 3 cột là cột P, cột U và cột Z, cột nào có số dòng lớn nhất thì sẽ căn cứ vào số dòng của cột đó mà autofill

Mã:
Dim lr As Long
lr = Worksheets("0").Range("U2:Z2").End(xlDown).Row

p/s: Code thì vui lòng cho vào thẻ
Mã:
 hoặc [php]

[COLOR=#ffffff]Cái trang này dài quá thể là dài!!!![/COLOR]
 
Upvote 0
Cám ơn bạn
Mình sẽ rút kinh nghiệm lần sau đưa vào thẻ code
Nhưng code bạn đưa ra cho vào nó không chạy được.
 
Upvote 0
Mình đã tự giải được rồi, cám ơn các bạn nhiều
Mã:
[/COLOR]
Sub chay()
Dim dongcuoi1 As Long
Dim dongcuoi2 As Long
Dim cp As Long
Dim cu As Long
Dim cz As Long
cp = Worksheets("0").Range("P" & Rows.Count).End(xlUp).Row
cu = Worksheets("0").Range("U" & Rows.Count).End(xlUp).Row
cz = Worksheets("0").Range("Z" & Rows.Count).End(xlUp).Row
dongcuoi1 = cp
If dongcuoi1 < cu Then dongcuoi1 = cu
If dongcuoi1 < cz Then dongcuoi1 = cz
Range("D2:O2").Select
Selection.AutoFill Destination:=Range("D2:O" & dongcuoi1)
[C2].Resize(Range([F2], [F1048576].End(xlUp)).Rows.Count).Value = Range([F2], [F1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([E2], [E1048576].End(xlUp)).Rows.Count).Value = Range([E2], [E1048576].End(xlUp)).Value
[C1048576].End(xlUp).Offset(1).Resize(Range([D2], [D1048576].End(xlUp)).Rows.Count).Value = Range([D2], [D1048576].End(xlUp)).Value
Range([C2], [C1048576].End(xlUp)).RemoveDuplicates Columns:=1
dongcuoi2 = Worksheets("0").Range("C2").End(xlDown).Row
Range("A2:B2").Select
Selection.AutoFill Destination:=Range("A2:B" & dongcuoi2&)
Cells.Select
ActiveWorkbook.Save
Range("A1").Select
Range("A1", Range("A2").End(xlDown)).Select
Selection.Copy
End Sub
[COLOR=#000000]
 
Upvote 0
Đồng hồ đếm ngược:
Em có file:
http://www.mediafire.com/file/brvw4uljyl2d70r/Dong+ho+dem+nguoc.xlsm

Em học được cách tạo đồng hồ đếm ngược từ anh @Thanh Ngoc Pham trên Youtube: https://www.youtube.com/watch?v=fi5b1iEFrwE
Nhưng có 1 vấn đề là: đồng hồ chỉ chạy khi không có ô excel nào active, khi nhập liệu vào ô cell thì đồng hồ dừng.
Các thầy cô, a/c có hướng nào để xử lý vấn đề này giúp em với ạ: đồng hồ vẫn chạy trong khi thao tác nhập liệu vẫn bình thường.
Em xin chân thành cảm ơn ạ!

P/s: với VBA em chỉ mới biết record macro, đọc hiểu vài code rất đơn giản thôi ạ ~~
 
Upvote 0
Đồng hồ đếm ngược:
Em có file:
http://www.mediafire.com/file/brvw4uljyl2d70r/Dong+ho+dem+nguoc.xlsm

Em học được cách tạo đồng hồ đếm ngược từ anh @Thanh Ngoc Pham trên Youtube: https://www.youtube.com/watch?v=fi5b1iEFrwE
Nhưng có 1 vấn đề là: đồng hồ chỉ chạy khi không có ô excel nào active, khi nhập liệu vào ô cell thì đồng hồ dừng.
Các thầy cô, a/c có hướng nào để xử lý vấn đề này giúp em với ạ: đồng hồ vẫn chạy trong khi thao tác nhập liệu vẫn bình thường.
Em xin chân thành cảm ơn ạ!

P/s: với VBA em chỉ mới biết record macro, đọc hiểu vài code rất đơn giản thôi ạ ~~

---------------------
Thử file này xem có ổn không anh!
 

File đính kèm

Upvote 0
Cám ơn bạn nhiều, nhờ dòng code này mình lại nghĩ thêm được vài cái hay ho nữa

Thử file này xem sao nhé
Lưu ý trong code có đoạn:
Mã:
Public Const s3 = "00:00:15"
Đây là giá trị bắt đầu của đồng hồ đếm ngược. Ở đây tôi đặt nó = 15s, muốn khác hơn hãy sửa lại nhé
 

File đính kèm

Upvote 0
Em cảm ơn thầy ndu rất nhiều ạ.
Em đã sử dụng được file của thầy rồi a.
(P/s: e không thấy nút thank để cảm ơn ạ)

Mã:
Public Const s3 = "00:00:15"
Đây là giá trị bắt đầu của đồng hồ đếm ngược. Ở đây tôi đặt nó = 15s, muốn khác hơn hãy sửa lại nhé[/QUOTE]
 
Upvote 0
Thử file này xem sao nhé
Lưu ý trong code có đoạn:
Mã:
Public Const s3 = "00:00:15"
Đây là giá trị bắt đầu của đồng hồ đếm ngược. Ở đây tôi đặt nó = 15s, muốn khác hơn hãy sửa lại nhé

Thưa thầy! Thầy giúp em một chút được không ạ?
1. Thầy sửa lại code cho em phần chạy thời gian trên Forum, hiện tại Enter là bắt đầu chạy, nhưng không có phần tạm dừng (như kiểu nút Pause). Em muốn chỉnh nút Enter vừa là nhấn để bắt đầu chạy thời gian và cũng nhấn để làm nút tạm dừng ạ.
2. Lỗi lúc thời gian nghỉ giữa hiệp đang chạy mà nhấn nút cách thì thời gian nghỉ lại chạy lại từ đầu, thầy chỉnh lại cho em là vô hiệu hóa các nút để không ảnh hưởng đến thời gian nghỉ.
3. Nếu số điểm chênh lệch giữa 2 vận động viên (Xanh và Đỏ) là 10 điểm thì vận động viên có số điểm cao hơn sẽ thắng (VD: Xanh 1 điểm - Đỏ 11 điểm, --> Đỏ thắng).
4. Khi vận động viên thắng thì điểm sẽ chuyển sang màu xanh như lúc nhảy điểm ạ.
Em cảm ơn thầy ạ.
---------------
File đính kèm em để phía dưới bài ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chúc ae, các bác năm mới 2017 dồi dào sức khoẻ, vạn sự như ý.
 
Upvote 0
Thưa thầy! Thầy giúp em một chút được không ạ?
1. Thầy sửa lại code cho em phần chạy thời gian trên Forum, hiện tại Enter là bắt đầu chạy, nhưng không có phần tạm dừng (như kiểu nút Pause). Em muốn chỉnh nút Enter vừa là nhấn để bắt đầu chạy thời gian và cũng nhấn để làm nút tạm dừng ạ.
2. Lỗi lúc thời gian nghỉ giữa hiệp đang chạy mà nhấn nút cách thì thời gian nghỉ lại chạy lại từ đầu, thầy chỉnh lại cho em là vô hiệu hóa các nút để không ảnh hưởng đến thời gian nghỉ.
Em cảm ơn thầy ạ.
---------------
File đính kèm em để phía dưới bài ạ.
Ủa? File này chạy sao vậy bạn? Tôi mở lên chẳng chạy được gì cả
 
Upvote 0
Xin lỗi thầy, em gửi lại file bên dưới ạ. Mong thầy chỉnh sửa giúp em ạ.
bạn thử thêm khai báo biến này vào đầu module nhe
Mã:
[COLOR=#ff0000]Public BD As Boolean[/COLOR]
thêm đoạn này vào Private Sub DisplayTimer()
Mã:
[COLOR=#ff0000]    Do
        DoEvents
    Loop Until BD = False[/COLOR]
'----------------------
thêm đoạn này vào usedform BangDiem
Mã:
    Case NhacNhoX
        Tinhnhacnho 2
[COLOR=#ff0000]    Case 13[/COLOR]
[COLOR=#ff0000]        BD = Not (BD)[/COLOR]
    End Select
còn cách tính thời gian bạn xem lại he. vì khi ẻnter lại thì nó trừ đi mất mấy giây lúc dừng lại luôn (ví dụ dừng 10s) kh enter chạy lại thì nó trừ mất 10s chứ ko phải trừ 1 giây
có thể chỉnh lại cho nó lấy giá trị của .caption trừ đi được không.
ps: mình còn gà nên không giúp được nhiều. mong code trên giúp được chút gì đó
 
Upvote 0
[Sửa lỗi code chạy 2 lần]

mọi người giúp mình vấn đề này với
cài Addins này vào và thao tác như hình
mục 1 - 2 -3 có thể chọn tùm lum gì cũng được.
nhưng thường hay bị lỗi ở mục như hình
mình có chỉnh khi nhấn vào nút lệnh thì sẽ hiện msgbox lên thông báo
vấn đề thế này
thời gian đầu nhấn thì code chạy và msgbox hiện lên chỉ một lần
nội dung code khi nhấn vào nút lệnh sẽ chạy tại ClassModule
nếu chèn module thì khi chọn 1 lệnh 2 lần sẽ hỏi lại có thay thế không
sau một hồi chèn module xong rồi xóa hết module vừa chèn đi (tức là không còn module nào nữa)

rồi lại thao tác lại thì lúc đó chỉ với một lần nhấn thì code chạy 2 lần (msgbox hiện 2 lần trong 1 lần nhấn) tức là chèn xong, lại chạy 1 lần nữa nên code hỏi có thay thế không? (trong khi trước đó đã xóa module đó đi rồi)
cho mình hỏi lý do vì sao lại bị chạy 2 -3 lần như thế
pass mở file: không có pass (bỏ trống rồi enter)
http://www.mediafire.com/file/n8g9rp9ia65f17m/aaaaaaaaaaaaaaaaaaaaa.xlam
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    28.8 KB · Đọc: 30
Upvote 0
bạn thử thêm khai báo biến này vào đầu module nhe
Mã:
[COLOR=#ff0000]Public BD As Boolean[/COLOR]
thêm đoạn này vào Private Sub DisplayTimer()
Mã:
[COLOR=#ff0000]    Do
        DoEvents
    Loop Until BD = False[/COLOR]
'----------------------
thêm đoạn này vào usedform BangDiem
Mã:
    Case NhacNhoX
        Tinhnhacnho 2
[COLOR=#ff0000]    Case 13[/COLOR]
[COLOR=#ff0000]        BD = Not (BD)[/COLOR]
    End Select
còn cách tính thời gian bạn xem lại he. vì khi ẻnter lại thì nó trừ đi mất mấy giây lúc dừng lại luôn (ví dụ dừng 10s) kh enter chạy lại thì nó trừ mất 10s chứ ko phải trừ 1 giây
có thể chỉnh lại cho nó lấy giá trị của .caption trừ đi được không.
ps: mình còn gà nên không giúp được nhiều. mong code trên giúp được chút gì đó
Em cảm ơn anh!
Có lẽ không ổn anh ạ, em làm như anh hướng dẫn nhưng code chạy vẫn thế không có gì thay đổi cả.
Vấn đề nút Enter ở đây không khác gì nút play khi nhấn vào nó sẽ chuyển sang nút stop ý ạ. Còn để dừng thời gian chạy mà đến lúc chạy lại mà bị trừ đi số thời gian tương ứng khi dừng thì không đúng rồi ạ.
 
Upvote 0
Em cảm ơn anh!
Có lẽ không ổn anh ạ, em làm như anh hướng dẫn nhưng code chạy vẫn thế không có gì thay đổi cả.
Vấn đề nút Enter ở đây không khác gì nút play khi nhấn vào nó sẽ chuyển sang nút stop ý ạ. Còn để dừng thời gian chạy mà đến lúc chạy lại mà bị trừ đi số thời gian tương ứng khi dừng thì không đúng rồi ạ.
vậy bạn xem file nhé
file cao siêu quá nên tui chịu thua, chỉ làm được vậy, còn nút đang thi đấu gì đấy bạn biết sửa ở đâu thì sửa, tui coi mà mù tịt.
 
Upvote 0
vậy bạn xem file nhé
file cao siêu quá nên tui chịu thua, chỉ làm được vậy, còn nút đang thi đấu gì đấy bạn biết sửa ở đâu thì sửa, tui coi mà mù tịt.
Hihi, em còn đuối hơn anh. File này em nhờ bác huuthang_bd làm mà. Em chịu hẳn rồi, nên nhờ cac bác giúp thôi. Anh huuthang_bd không có thời gian nên chưa kịp hoàn chỉnh file. Nhưng thực sự là cảm ơn các anh rất nhiều.
P/s: file a chỉnh thời gian chạy và dừng khi nhấn Enter cũng được đấy chứ ạ. Em thử test có vấn đề gì đâu ạ.??.
 
Lần chỉnh sửa cuối:
Upvote 0
Hihi, em còn đuối hơn anh. File này em nhờ bác huuthang_bd làm mà. Em chịu hẳn rồi, nên nhờ cac bác giúp thôi. Anh huuthang_bd không có thời gian nên chưa kịp hoàn chỉnh file. Nhưng thực sự là cảm ơn các anh rất nhiều.
P/s: file a chỉnh thời gian chạy và dừng khi nhấn Enter cũng được đấy chứ ạ. Em thử test có vấn đề gì đâu ạ.??.
đã sửa lại nút "Stop"- "Đang thi đấu", tải file này nhé bạn
 
Upvote 0
Em có học 1 file combobox trên forum và tự làm theo nhu cầu của mình nhưng muốn thêm vào 1 số chức năng nữa là giới hạn vùng thực hiện combobox và khi click vào ô có combobox thì khoảng 0.5s sau nó mới hiện ra để có thể bôi đen và thực hiện 1 số lệnh khác.
Đây là file e làm, các bác giúp em với ạ
 

File đính kèm

Upvote 0
Cảm ơn anh ạ. Chạy có vẻ ổn rồi, nhưng vẫn lỗi phần nghỉ giữa hiệp khi nhấn Enter lại trở lại thời gian nghỉ ban đầu. Chỉnh thế nào đây ạ?
Tôi thêm cho bạn nút tạm dừng (Space) và sửa lỗi nhấn Enter khi đang nghỉ giữa hiệp.
 

File đính kèm

Upvote 0
Tôi thêm cho bạn nút tạm dừng (Space) và sửa lỗi nhấn Enter khi đang nghỉ giữa hiệp.
Dạ vâng, ok rồi anh ạ. Cảm ơn anh nhiều.
------------
1. Bổ xung code như thế nào để khi tạm dừng sẽ vô hiệu hóa các nút ạ (vì khi tạm dừng thì nhấn cho điểm vẫn nhận), giống như lúc nghỉ giữa hiệp ấy ạ.
2. Khi thoát Bảng chấm điểm thì nhấn nút Esc là ok rồi ạ, nhưng nhờ anh thêm bảng thông báo hiện lên hỏi là có thực sự muốn thoát không, vì nhỡ tay nhấn mà thoát luôn Bảng điểm thì nguy hiểm quá.
3. Phần tính điểm chênh lệch nhau 10 điểm là kết thúc trận đấu: VD khi VĐV đỏ được 10 điểm, VĐV xanh 0 điểm thì bảng hiện kết thúc trận đấu, thời gian dừng luôn tại thời điểm thắng đó. Điểm của VĐV hơn điểm hiện màu xanh như lúc nhảy điểm (nhưng ở đây hiện giữ nguyên màu xanh).
-------
Nhờ anh và mọi người ạ! Thank.
 
Upvote 0
Dạ vâng, ok rồi anh ạ. Cảm ơn anh nhiều.
------------
1. Bổ xung code như thế nào để khi tạm dừng sẽ vô hiệu hóa các nút ạ (vì khi tạm dừng thì nhấn cho điểm vẫn nhận), giống như lúc nghỉ giữa hiệp ấy ạ.
2. Khi thoát Bảng chấm điểm thì nhấn nút Esc là ok rồi ạ, nhưng nhờ anh thêm bảng thông báo hiện lên hỏi là có thực sự muốn thoát không, vì nhỡ tay nhấn mà thoát luôn Bảng điểm thì nguy hiểm quá.
3. Phần tính điểm chênh lệch nhau 10 điểm là kết thúc trận đấu: VD khi VĐV đỏ được 10 điểm, VĐV xanh 0 điểm thì bảng hiện kết thúc trận đấu, thời gian dừng luôn tại thời điểm thắng đó. Điểm của VĐV hơn điểm hiện màu xanh như lúc nhảy điểm (nhưng ở đây hiện giữ nguyên màu xanh).
-------
Nhờ anh và mọi người ạ! Thank.
Đã sửa y/c 1 và 2 theo ý bạn.
 

File đính kèm

Upvote 0
Em có trường hợp này cần mọi người trợ giúp.

1. Em có file data như bên dưới, em muốn dùng VBA để kết hợp data của 2 ô A2&B2 vào trong ô C2 với định dạng như bên dưới thì sẽ dùng công thức gì ?
DATE TIME.jpg
2. Sau khi chạy VBA, em muốn copy Sheet ( Pre Alert ) sang 1 worksheet mới và save Worksheet đó với 1 tên vd như : LCK Summary Pre-Alert.xlsx thì code sẽ như thế nào ?
sheet.jpg
Em xin cám ơn nhiều
 

File đính kèm

  • DATE TIME.jpg
    DATE TIME.jpg
    9 KB · Đọc: 37
Upvote 0
Đã sửa y/c 1 và 2 theo ý bạn.
Anh ơi!
1. Trong trường hợp cho 2 VĐV thi đấu lại ở thời gian tủy ý thì có cách nào để nhập trực tiếp thời gian tùy ý đó vào trong Bảng điểm thi đấu ở mục thời gian không ạ. Hiện tại phải thoát bảng điểm rồi nhập lại thời gian tùy ý đó ở ngoài, nhưng các thông số về trận đấu như điểm rồi lỗi nhắc nhở .. lại phải chỉnh lại cho đúng thời điểm trước đó. Nếu nhập trực tiếp được thời gian tùy ý vào mục thời gian ở Bảng điểm thì tốt quá.

2. Ở mục nhắc nhở và cảnh cáo cũng vậy ạ, đúng là số lần nhắc nhở chỉ tăng chứ không có giảm và số lần cảnh cảo căn cứ theo số lần nhắc nhở. Nhưng có 1 vấn đề nảy sinh đó là khi VĐV bị 1 lần nhắc nhở mà lỡ tay nhấn thành 2 lần nhắc nhở thì không có cách nào để trừ đi 1 lần nhắc nhở cả. Với lại cần để ý đến trường hợp khi 1 VĐV bị 2 lần nhắc nhở rồi, ta lỡ tay nhấn thêm 1 lần nhắc nhở nữa thì rõ ràng lúc đó mục Cảnh cáo nhảy số 1 và VĐV đó bị trừ đi 2 điểm. Sau đó ta phải sửa lại và phải trừ đi 1 lần nhắc nhở cho đúng với VĐV đó, vậy để làm sao khi trừ đi 1 lần nhắc nhở ấy thì mục cảnh cáo sẽ không hiện số 1 nữa.. (Theo em, nên thêm mỗi bên VĐV 2 nút nhấn (+1 và -1) ở mục Nhắc nhở để thay thế phím tắt. Như vậy khi VĐV nào đó bị nhắc nhở thì nhấn +1, còn lỡ may sai sót mà nhấn thêm số lần nhắc nhở của VĐV thì khi chỉnh lại ta nhấn -1, như vậy có vẻ ổn. )
Nhờ anh chỉnh giúp!
 
Upvote 0
Anh chị cho em hỏi, hiện tại code của em khi chạy chỉ áp dụng cho Sheet đang select. Bây giờ em muốn làm sao mỗi lần chạy nó hiện Box để nhập sheet cần tính thì em phải làm thế nào ạ?

Ngoài ra code của em chạy không được nhanh, anh chị có thể làm thế nào để code chạy nhanh hơn không ạ?
 

File đính kèm

Upvote 0
Anh chị cho em hỏi, hiện tại code của em khi chạy chỉ áp dụng cho Sheet đang select. Bây giờ em muốn làm sao mỗi lần chạy nó hiện Box để nhập sheet cần tính thì em phải làm thế nào ạ?
PHP:
Option Explicit
Sub LuaChon1Trong2TrangTinh()
 Dim Wh As String, ShName As String

 Wh = InputBox("A- Cong Doan A" & Chr(10) & "B- Cong Doan Hoàn Tát", "GPE.COM Xin Chào!")
 If Wh < "A" And Wh > "B" Then
    MsgBox "Tam Biet!":         Exit Sub
 End If
 ShName = Choose(Asc(UCase(Wh)) - 64, "CD_A", "HT", "GPE.COM")
 MsgBox ShName
End Sub
 
Upvote 0
PHP:
Option Explicit
Sub LuaChon1Trong2TrangTinh()
 Dim Wh As String, ShName As String

 Wh = InputBox("A- Cong Doan A" & Chr(10) & "B- Cong Doan Hoàn Tát", "GPE.COM Xin Chào!")
 If Wh < "A" And Wh > "B" Then
    MsgBox "Tam Biet!":         Exit Sub
 End If
 ShName = Choose(Asc(UCase(Wh)) - 64, "CD_A", "HT", "GPE.COM")
 MsgBox ShName
End Sub

Anh ơi em không hiểu nhiều về VBA đâu nên em không biết làm nào để select cái sheet mà mình nhập trong InputBox cả :(
 
Lần chỉnh sửa cuối:
Upvote 0
Em chào các anh.
Em nhờ các anh viết code copy dữ liệu từ nhiều sheet về 1 sheet
Giải sử file có nhiều sheet, và chưa biết rõ số dòng cụ thể.
Em đã tìm kiếm trên diễn đàn thì có 1 bài viết code về vấn đề này rồi. Code đấy như sau:

Public Sub GPE()
Dim sArr(), dArr(1 To 65000, 1 To 250), I As Long, J As Long, K As Long, Col As Long, Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "GPE" Then
sArr = Ws.Range(Ws.[A2], Ws.[A65000].End(xlUp)).Resize(, Ws.[IV1].End(xlToLeft).Column)
If Ws.[IV1].End(xlToLeft).Column > Col Then Col = Ws.[IV1].End(xlToLeft).Column
For I = 1 To UBound(sArr, 1)
K = K + 1
For J = 1 To UBound(sArr, 2)
dArr(K, J) = sArr(I, J)
Next J
Next I
End If
Next
With Sheets("GPE")
.[A4:IV65000].ClearContents
If K Then .[A4].Resize(K, Col).Value = dArr
End With
End Sub

Em đã chạy thử code này và code tự động chạy khi em chuyển từ sheet này sang sheet khác và cũng chỉ chạy được 65000 dòng thôi
Hiện tại file của em dữ liệu nhiều hơn 65000 dòng và em muốn khi nào mình chạy code thì file mới chạy các anh viết giúp em với.
Em cảm ơn.
 
Upvote 0
Cho em hỏi giữa việc lấy giá trị trong một ô để so sanh với việc viết luôn cái giá trị ấy vào vba thì cái nào nhanh hơn

Ví dụ so sánh ở ô A1 dữ liệu là YES thì thay vì em ghi [A1] em sẽ viết là "YES" thì cái nào nhanh hơn ạ?
 
Upvote 0
Cho em hỏi giữa việc lấy giá trị trong một ô để so sanh với việc viết luôn cái giá trị ấy vào vba thì cái nào nhanh hơn

Ví dụ so sánh ở ô A1 dữ liệu là YES thì thay vì em ghi [A1] em sẽ viết là "YES" thì cái nào nhanh hơn ạ?
Theo mình thì việc tham chiếu dữ liệu ở 1 ô nào đó trong VBA với việc viết cụ thể dữ liệu ở trong code thì tốc độ cũng còn tùy vào cách viết của mỗi người. Ở đây nên hiểu là việc viết cụ thể dữ liệu ở trong code thì rõ ràng là dữ liệu tĩnh và duy nhất để tham chiếu, còn đối với tham chiếu về ô nào đó trong bảng tính theo mình nó mang ý nghĩa rộng hơn.
-------
p/s: mình cũng không biết nhiều về VBA, chỉ nói theo cách mình hiểu thôi. hihi.
 
Upvote 0
Ừm mình cũng nghĩ giữa việc mang cái bánh cho người đang đói với việc chỉ chỗ có cái bánh thì việc mang chắc là nhanh hơn nhưng không "tiện hơn". Chỉ chỗ có bánh cũng giống như sau này có đói thì ra chỗ có bánh về lâu dài tiện hơn chứ không phải vòng vèo tìm người cho bánh.
Tuy nhiên trong nhiều trường hợp việc cầm cái bánh trên tay sẵn ăn thì tốt hơn nhiều nhỉ.
Cảm ơn bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Ừm mình cũng nghĩ giữa việc mang cái bánh cho người đang đói với việc chỉ chỗ có cái bánh thì việc mang chắc là nhanh hơn nhưng không "tiện hơn". Chỉ chỗ có bánh cũng giống như sau này có đói thì ra chỗ có bánh về lâu dài tiện hơn chứ không phải vòng vèo tìm người cho bánh.
Tuy nhiên trong nhiều trường hợp việc cầm cái bánh trên tay sẵn ăn thì tốt hơn nhiều nhỉ.
Cảm ơn bạn.

Vâng, đại loại là vậy. Mọi thứ đều có 2 mặt của nó mà.
 
Upvote 0
Nhờ giúp đỡ

Các bạn giúp mình xóa lệnh tự in trong bảng excel này với nhiều lúc nhắp chuột nó tự lưu, nhưng nhắp sai chỗ nó tự in ra trong khi mình không cần tự in
Cảm ơn các bạn nhiều
 

File đính kèm

  • 3.xls
    3.xls
    203.5 KB · Đọc: 5
Upvote 0
Các bạn giúp mình xóa lệnh tự in trong bảng excel này với nhiều lúc nhắp chuột nó tự lưu, nhưng nhắp sai chỗ nó tự in ra trong khi mình không cần tự in
Cảm ơn các bạn nhiều
ai biểu bạn gán hình cho macro tự chạy mà cho nó no fill và noline chi, để rồi không thấy khi nhấp chuột vào thì nó sẽ thực thi lệnh, bạn muốn rõ ràng thì phải cho cái hình đó nổi lên và cho nằm ở chỗ khác để tiện làm theo ý tại L13:L24 có 1 cái hình
 
Upvote 0
Các bác tiễn ông Công ông Táo ngon lành cả chứ? Chúc các bác ae chuẩn bị tết cổ truyền thật đầy đủ và vui vẻ đoàn viên nhé!
 
Upvote 0
Em đang có một rắc rối không hiểu tai sao:

Anh chị xem file đính kèm giúp em nhé.

Rõ ràng câu lệnh vba đầu nếu cột K L và M có dữ liệu thì cột O và P lấy theo dữ liệu ra vào ở cột K và L. Nhưng em không hiểu vì sao mà kết quả nó không như ý của em.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em tìm ra nguyên nhân rồi, hóa ra nếu giá trị là 0 thì cũng là Empty. Em cứ tưởng Empty nghĩa là không có bất cứ cái gì.
 
Upvote 0
Chúc cả nhà ăn tết cổ truyền An khang thịnh vượng.
Happy new year! 2017.
 
Upvote 0
Đã sửa y/c 1 và 2 theo ý bạn.
Anh Thắng ơi! Chèn âm thanh vào code khi kết thúc mỗi hiệp đấu sẽ có tiếng kêu báo hiệu được không ạ? Và khi hết thời gian nghỉ giữa 2 hiệp cũng có tiếng kêu báo cho 2 VĐV vào sân để chuẩn bị thi đấu tiếp hiệp tiếp theo được không ạ?
Anh xem giúp em với ạ.!
 
Upvote 0
https://drive.google.com/open?id=0B075UkAw9fa3SEQ0OUNqSThTWVU
NHỜ CÁC ANH XEM GIÚP CODE COPPY

Private Sub COPYTOPTVT_Click()
'
' Macro1 Macro
' Macro recorded 5/11/2017 by PC
'

'
Range("A15:Q44").Select
Range("Q44").Activate
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("PTVT").Select
Rows("5:5").Select
ActiveWindow.SmallScroll Down:=-12
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-18
End Sub
đoạn code trên em dùng macro record lại ko biết tại sao, nhờ các anh sửa giúp code giúp em với, em muốn khi bấm nút coppy (chỉ copy từ dòng 15 đến dòng màu vàng thì dữ liệu coppy vào sheet ptvt và ghi tiếp không ghi đè lên nhau
 
Lần chỉnh sửa cuối:
Upvote 0
https://drive.google.com/open?id=0B075UkAw9fa3SEQ0OUNqSThTWVU
NHỜ CÁC ANH XEM GIÚP CODE COPPY

Private Sub COPYTOPTVT_Click()
'
' Macro1 Macro
' Macro recorded 5/11/2017 by PC
'

'
Range("A15:Q44").Select
Range("Q44").Activate
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("PTVT").Select
Rows("5:5").Select
ActiveWindow.SmallScroll Down:=-12
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-18
End Sub
đoạn code trên em dùng macro record lại ko biết tại sao, nhờ các anh sửa giúp code giúp em với, em muốn khi bấm nút coppy (chỉ copy từ dòng 15 đến dòng màu vàng thì dữ liệu coppy vào sheet ptvt và ghi tiếp không ghi đè lên nhau
Bạn sửa code lại thế này thử xem.
Mã:
Sub GPE()
    Sheets("CS4C-ML-XF93-T1.2").Range("A15:Q" & Sheets("CS4C-ML-XF93-T1.2").Range("A65000").End(xlUp).Row - 2).Copy
    Sheets("PTVT").Range("a65000").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
End Sub
 
Upvote 0
Bạn sửa code lại thế này thử xem.
Mã:
Sub GPE()
    Sheets("CS4C-ML-XF93-T1.2").Range("A15:Q" & Sheets("CS4C-ML-XF93-T1.2").Range("A65000").End(xlUp).Row - 2).Copy
    Sheets("PTVT").Range("a65000").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
End Sub
MÌNH SỬA LẠI CODE RỒI KHI CHẠY THỬ THẤY LỖI NÀY ANH XEM GIÚP EM VỚI
 

File đính kèm

  • LOI 1.png
    LOI 1.png
    287.6 KB · Đọc: 9
Upvote 0
Status
Không mở trả lời sau này.

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

Back
Top Bottom