Nhờ kiểm tra Code tự động điền vào các vùng khác nhau trong 1 bảng tính (2 người xem)

Liên hệ QC

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

khuongvietphong

Be all you can be !
Tham gia
6/7/14
Bài viết
2,069
Được thích
1,444
Nghề nghiệp
Ăn không ngồi rồi ^.^
Nhờ các anh chị kiểm tra giúp em xem đoạn Code trong File nó bị "bệnh" gì mà khi chạy lại báo lỗi ạ.

Chi tiết và ví dụ cụ thể em ghi trong File rồi đó. Em cảm ơn mọi người !
 

File đính kèm

bạn thêm lệnh
Application.EnableEvents = False

OK. Tớ cám ơn bạn nhiều nhé. Mình dùng sự kiện Change suốt ngày bị thiếu cặp lệnh này:
Mã:
[COLOR=#000000]Application.EnableEvents = False
[/COLOR][COLOR=#000000]Application.EnableEvents = True

Trí nhớ vô cùng tồi . Làm riết rồi mà vẫn quên hoài ...THANK YOU ![/COLOR]
 
Upvote 0
Thêm EnableEvents = False và EnableEvents = True
Ngoài ra. thiếu 1 điều kiện là không ghi đè lên giá trị đã có
 
Upvote 0
Nhờ các anh chị kiểm tra giúp em xem đoạn Code trong File nó bị "bệnh" gì mà khi chạy lại báo lỗi ạ.

Chi tiết và ví dụ cụ thể em ghi trong File rồi đó. Em cảm ơn mọi người !

anh Tiêu Phong viết code "dữ" quá , ngưỡng mộ ;;;;;;;;;;;;;;;;;;;;;;
Giờ em có thắc mắc nhỏ nhờ anh Tiêu Phong giúp đở
em có vùng 8 ô x 8 ô
giờ người dùng đặt con hậu lên 1 vị trí bất kì , làm sao tự điền 7 con hậu vào 7 vị trí còn lại sao cho không có con nào ăn được con nào . Em nghĩ mãi chưa ra nhờ anh Tiêu Phong giúp với . hi hi !$@!!!$@!!
 
Upvote 0
anh Tiêu Phong viết code "dữ" quá , ngưỡng mộ ;;;;;;;;;;;;;;;;;;;;;;

Đừng chọc quê em mà anh !!
Giờ em có thắc mắc nhỏ nhờ anh Tiêu Phong giúp đở
em có vùng 8 ô x 8 ô
giờ người dùng đặt con hậu lên 1 vị trí bất kì , làm sao tự điền 7 con hậu vào 7 vị trí còn lại sao cho không có con nào ăn được con nào . Em nghĩ mãi chưa ra nhờ anh Tiêu Phong giúp với . hi hi !$@!!!$@!!

Chết cha .. bị anh đố khó rồi ...Hãy cho em thời gian anh nhé ...
 
Upvote 0
anh Tiêu Phong viết code "dữ" quá , ngưỡng mộ ;;;;;;;;;;;;;;;;;;;;;;
Giờ em có thắc mắc nhỏ nhờ anh Tiêu Phong giúp đở
em có vùng 8 ô x 8 ô
giờ người dùng đặt con hậu lên 1 vị trí bất kì , làm sao tự điền 7 con hậu vào 7 vị trí còn lại sao cho không có con nào ăn được con nào . Em nghĩ mãi chưa ra nhờ anh Tiêu Phong giúp với . hi hi !$@!!!$@!!

1. Hậu không ăn được lẫn nhau:
- Không cùng dòng hoặc cột (dễ)
- Không cùng đường chéo: abs(row2 - row1) <> abs(column2 - column1)

2. Phương pháp:
Kiểm tra không cùng đường chéo: Tuần tự kiểm tra 2 và 1, 3 và 2, 4 và 3, ... 8 và 7

3. Lập trình:
Khoan làm 8 con, làm 2 con trước, rồi 3 con, 4 con. Nếu 4 con đúng thì làm 8 con.
 
Upvote 0
vùng 8 ô x 8 ô
giờ người dùng đặt con hậu lên 1 vị trí bất kì , làm sao tự điền 7 con hậu vào 7 vị trí còn lại sao cho không có con nào ăn được con nào

Bài này khó qua anh ơi, không giống với bài trên, ta không thể xếp 1 cách tùy tiện được. Nếu lúc như lúc đầu mình thích

đặt con hậu ở đâu thì đặt thì sẽ có trường hợp xếp không đủ 8 con trên bàn cờ được.
 
Upvote 0
Bài này khó qua anh ơi, không giống với bài trên, ta không thể xếp 1 cách tùy tiện được. Nếu lúc như lúc đầu mình thích

đặt con hậu ở đâu thì đặt thì sẽ có trường hợp xếp không đủ 8 con trên bàn cờ được.

ờ , bài đó chỉ dành để làm khi nào quá rảnh , giúp luyện kĩ năng suy luận , không nhất thiết phải làm ra ngay .
đến 1 lúc nào đó đủ "nội công" , tự nhiên em sẽ làm được thôi mà .
 
Upvote 0
Upvote 0
Bài này khó qua anh ơi, không giống với bài trên, ta không thể xếp 1 cách tùy tiện được. Nếu lúc như lúc đầu mình thích

đặt con hậu ở đâu thì đặt thì sẽ có trường hợp xếp không đủ 8 con trên bàn cờ được.
Hình như đúng vậy, tôi chưa thử sắp lần nào được 8 con kể cả sắp bằng tay.

Sau đây là code sắp 7 con, thủ thuật đơn giản:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim BanCo As Range, i As Long, j As Long, Rw As Long, Col As Long
Dim Giatri


Set BanCo = Sheet1.Range("F3:M10")
Rw = Target.Row - 2: Col = Target.Column - 5
Giatri = Target.Value
BanCo.ClearContents
Target.Value = Giatri
x = Rw: y = Col
If Not Intersect(Target, BanCo) Is Nothing Then
    If Target.Count > 1 Then GoTo ExitSub
    For i = Rw To Rw + 5
        x = (x + 2)
        If x > 8 Then x = x Mod 8 + 1
        y = (y + 1)
        If y > 8 Then y = y Mod 8 + 1
        BanCo(x, y) = Giatri
    Next i
End If
ExitSub:
Application.EnableEvents = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Những bài kinh điển thế này search google ra cả đống ngay. Thử không google xem sao. Có thể lập 1 hàm với tham số là mảng arr (), mảng này có 8 phần tử, arr (i) là cột của con hậu trên hàng i, arr (i)=0 hàng i chưa có con nào, các phần tử của mảng có giá trị từ 0 đên 8 và các số dương thì khác nhau. Ta xét i từ 1 đến 8,nếu arr (i)=0 thì gán giá trị >0 rồi gọi đệ quy với mảng mới. Không biết máy có chịu nổi không
 
Upvote 0
Phong có hình của 1 đáp án nào đó không?

dạ em xếp "hên xui" được vài hình nè thầy . --=0--=0

a33cf111422d8926e7edfbfb755eb27b.png
 
Upvote 0
Bài này khó qua anh ơi, không giống với bài trên, ta không thể xếp 1 cách tùy tiện được. Nếu lúc như lúc đầu mình thích

đặt con hậu ở đâu thì đặt thì sẽ có trường hợp xếp không đủ 8 con trên bàn cờ được.

mình nghe "giang hồ" nói là đặt 1 con đầu tiên ở bất cứ chỗ nào cũng sẽ tìm được hộ khẩu cho 7 em còn lại đấy . +-+-+-++-+-+-++-+-+-+
 
Upvote 0
Lúc đầu mình lo tràn bộ nhớ khi dùng đệ quy, sau mới thấy có 8! khoảng 40k khả năng thì đệ quy đơn giản. Để tạo ra các hoán vị, mình lập hàm tham số n là kích thước bàn cờ, hàm trả về mảng, mỗi phần tử mảng là chuỗi chỉ vị trí con hậu. Hàm được lập bằng đệ quy, với mỗi chuỗi gồm các ký tự từ 1 đến n-1 ta nhét thêm ký tự n vào n vị trí. Ví dụ từ chuỗi 12 là các con hậu ở hàng 1 cột 1, hàng 2 cột 2; ta thêm số 3 thành 312, 132, 123. Sau khi có tất cả 8! hoán vị thì kiểm tra từng hoán vị bằng cách tách các chữ số trong chuỗi vào mảng a (1 to 8) chẳng hạn rồi kiểm tra xem a(i)+i và a (i)-i có trùng nhau không. Kết quả hình như có 92 cách xếp 8 con hậu, sau đó lọc ra các cách xếp có con hậu ở vị trí cho trước.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom