Chuyên mục xử lý, gỡ rối code VBA

Liên hệ QC
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,930
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

  • Bang diem thi dau vo thuat.xlsm
    68.2 KB · Đọc: 7
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: 36
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

  • Tinh gio phuc tap - Ver6.xlsm
    845.6 KB · Đọc: 10
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
    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

  • Hoi dap.xlsb
    573.2 KB · Đọc: 11
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
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom