Chạy hoài không dừng!i

Liên hệ QC

emgaingayngo

Thành viên hoạt động
Tham gia
9/2/07
Bài viết
141
Được thích
5
PHP:
Sub Thu()
strDLoaiGA = ""
    For ihang = 1 To 9 Step 2
        For jcot = 12 To 14
        If Cells(ihang + 2, jcot) <> "" And Cells(ihang + 3, jcot) <> "" Then
            strDLoaiGA = strDLoaiGA & Cells(ihang + 2, jcot) & " " & Cells(ihang + 3, jcot).Value & Chr(10)
        End If
        Next jcot
    Next ihang
End Sub

đầu tiên em chạy đoạn mã trên thì OK
sau đó em muốn kiểm tra : nếu như strDLoaiGA <>"" thì tăng giá trị ChonLan lên 1 dv đến khi nào strDLoaiGA = "" thì dừng. em làm như sau :

PHP:
Sub Thu()
strDLoaiGA = ""
    For ihang = 1 To 9 Step 2
        For jcot = 12 To 14
        If Cells(ihang + 2, jcot) <> "" And Cells(ihang + 3, jcot) <> "" Then
            strDLoaiGA = strDLoaiGA & Cells(ihang + 2, jcot) & " " & Cells(ihang + 3, jcot).Value & Chr(10)
            If strDLoaiGA <> "" Then
            Do
            Range("ChonLan").Value = Range("ChonLan").Value + 1
            strDLoaiGA = strDLoaiGA & Cells(ihang + 2, jcot) & " " & Cells(ihang + 3, jcot).Value & Chr(10)
            MsgBox strDLoaiGA
            Loop Until strDLoaiGA = ""
            End If
        End If
        Next jcot
    Next ihang
End Sub

nhưng nó không chịu dừng. Mong GPE giúp đỡ.
 
Form Sa_DQ:

Bạn hãy dùng chức năng [Table ]. . . [/table] để đưa dữ liệu của bạn lên & nói mục đích bạn trong đoạn code;
Lúc đó thì tiện hơn & nhanh hơn

Chờ tin bạn!

Nhờ MÓD/SMOD gộp vô bài trên giúp, xin cảm ơn nhiều!

Không gộp được, 2 bài của 2 người viết làm sao gộp?
Ptm0412
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Rất đơn giản: Vòng lặp Do để trong 2 vòng lặp For, nghĩa là với giá trị đầu tiên của ihang và jcot:
- Nếu strDLoaiGA = "" thì qua giá trị kế tiếp của jcot
- Nếu strDLoaiGA <> "" thì chạy dòng lệnh bên trong Do. Điều kiện thoát Do là strDLoaiGA = "" không bao giờ thoả vì strDLoaiGA <> "" có thay đổi gì đâu? strDLoaiGA chỉ thay đổi nếu qua được jcot hoặc ihang kế tiếp, đằng này . . . nằm chết dí trong 2 vòng For!
 
Upvote 0
mô tả = hình , em không bit dùng chức năng table
tại cell R2 là gía trị ChonLan. em muốn cho giá trị này tăng lên mỗi lần 1 dv, đến khi nào strDLoaiGA = ""


nhưng em không biết đặt vòng Do ở đâu cho hợp lý.

Mong GPE chỉ em lại cách đặt vòng DO...LOOP.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử code sau: (nếu tôi đoán đúng)
PHP:
Sub Thu()
strDLoaiGA = ""
    For ihang = 1 To 29 Step 2
        For jcot = 12 To 14
        If Cells(ihang + 2, jcot) <> "" And Cells(ihang + 3, jcot) <> "" Then
            strDLoaiGA = strDLoaiGA & Cells(ihang + 2, jcot) & " " & Cells(ihang + 3, jcot).Value & Chr(10)
            If strDLoaiGA <> "" Then
            Range("A1").Value = Range("A1").Value + 1
            MsgBox strDLoaiGA
            End If
        End If
        Next jcot
    Next ihang
End Sub
 

File đính kèm

Upvote 0
Mô tả lại bài toán "chạy hoài không dừng"

PHP:
Sub LayChuoi()
Dim strDLoaiGA As String
Dim ihang As Long, jcot As Long
 strDLoaiGA = ""
    For ihang = 1 To 9 Step 2
        For jcot = 12 To 14
        If Cells(ihang + 2, jcot) <> "" And Cells(ihang + 3, jcot) <> "" Then
            strDLoaiGA = strDLoaiGA & Cells(ihang + 2, jcot) & "-" & Cells(ihang + 3, jcot).Value & " "
        End If
        Next jcot
    Next ihang
    strDLoaiGA = Trim(strDLoaiGA)
    MsgBox strDLoaiGA
    
End Sub

Sau khi lấy chuỗi strDLoaiGA xong, em muốn thao tác tiếp như sau :
- Nếu giá trị chuỗi <> "" thì tăng giá trị range("ChonLan") lên 1 dv
- sau đó kiểm tra lại chuỗi, nếu vẫn còn <>"" thì lại tăng lên 1dv nữa
- Lặp lại cho khi giá trị chuỗi strDLoaiGA = "" thì dừng.

Mong GPE giúp đỡ. Thanks Much!
 

File đính kèm

Upvote 0
PHP:
Sub LayChuoi()
Dim strDLoaiGA As String
Dim ihang As Long, jcot As Long
 strDLoaiGA = ""
    For ihang = 1 To 9 Step 2
        For jcot = 12 To 14
        If Cells(ihang + 2, jcot) <> "" And Cells(ihang + 3, jcot) <> "" Then
            strDLoaiGA = strDLoaiGA & Cells(ihang + 2, jcot) & "-" & Cells(ihang + 3, jcot).Value & " "
        End If
        Next jcot
    Next ihang
    strDLoaiGA = Trim(strDLoaiGA)
    MsgBox strDLoaiGA
    
End Sub

Sau khi lấy chuỗi strDLoaiGA xong, em muốn thao tác tiếp như sau :
- Nếu giá trị chuỗi <> "" thì tăng giá trị range("ChonLan") lên 1 dv
- sau đó kiểm tra lại chuỗi, nếu vẫn còn <>"" thì lại tăng lên 1dv nữa
- Lặp lại cho khi giá trị chuỗi strDLoaiGA = "" thì dừng.

Mong GPE giúp đỡ. Thanks Much!
Như tôi đã nói (ít nhất 2 lần) trước đây rồi... vì cách mô tả vấn đề của bạn khá khó hiẻu nên tôi đề xuất thế này:
- Tạm thời hãy quên đi code mà bạn đang viết (vì chắc gì đã đúng hướng)
- Hãy cho file đầy đủ và không có code lên đây
- Nói rõ bạn muốn Excel làm gì?
- Mục đích cuối cùng của bạn là gì? Kết quả cuối cùng sẽ được đặt tại cell nào?
Vậy thôi ---> Loay hoay chi với mấy cái code ấy, hỏi cả tháng cũng không xong vấn đề
 
Upvote 0
Bác vui lòng download file ở bài 6 nha.!

Mục đích cuối cùng :
- trong 1 ngày chọn 2 số ở 2 dòng liền kề với điều kiện : hàng chục = nhau hoặc hàng đơn vị = nhau.
Ví dụ : - Ngày 05/02/01 có 2 số : 58-53 (hoặc 53-54.)
- Thống kê xem cách bao nhiêu cột thì 1 trong 2 con trong cặp đã chọn sẽ xuất hiện.

Kết quả cụ thể : 53-58 = 1 cột
53-54 = 7 cột

Chào thân ái!
 
Upvote 0
Có iêu cầu nhỏ với tác giả topic:
Đưa tiếp file E2003 lên dùm cái, nếu được!
 
Upvote 0
Web KT

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

Back
Top Bottom