Có thể đặt vòng For...Next cho code sau?

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
GPE cho hỏi, mình có thể đặt vòng For cho code sau :

PHP:
Select Case iNumber
    Case 1
    stBo = """" & stBo & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo & dong & "," & stBo & "," & trong & dong
   
    Case 2
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Right(stBo, 2): stBo2 = """" & stBo2 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & dong & "," & stBo1 & "," & trong & dong
    Case 3
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Right(stBo, 2): stBo3 = """" & stBo3 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & dong & "," & stBo1 & "," & trong & dong
        
    Case 4
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Mid(stBo, 7, 2): stBo3 = """" & stBo3 & """"
    stBo4 = Right(stBo, 2): stBo4 = """" & stBo4 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & "," _
        & cauThe & "=" & stBo4 & dong & "," & stBo1 & "," & trong & dong
        
    Case 5
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Mid(stBo, 7, 2): stBo3 = """" & stBo3 & """"
    stBo4 = Mid(stBo, 10, 2): stBo4 = """" & stBo4 & """"
    stBo5 = Right(stBo, 2): stBo5 = """" & stBo5 & """"
     ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & "," _
        & cauThe & "=" & stBo4 & "," _
        & cauThe & "=" & stBo5 & dong & "," & stBo1 & "," & trong & dong
        
    Case 6
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Mid(stBo, 7, 2): stBo3 = """" & stBo3 & """"
    stBo4 = Mid(stBo, 10, 2): stBo4 = """" & stBo4 & """"
    stBo5 = Mid(stBo, 10, 2): stBo5 = """" & stBo5 & """"
    stBo6 = Right(stBo, 2): stBo6 = """" & stBo6 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & "," _
        & cauThe & "=" & stBo4 & "," _
        & cauThe & "=" & stBo5 & "," _
        & cauThe & "=" & stBo6 & dong & "," & stBo1 & "," & trong & dong
End Select
 
Bạn thử thay bằng đoạn code này xem sao.
Mã:
Dim i As Integer
Dim strTemp As String
strTemp = "=" & cauIf
For i = 0 To iNumber - 1
    strTemp = strTemp & cauThe & "=" & Mid(strBo, i * 2 + 1, 2) & ","
Next
strTemp = strTemp & dong & "," & Mid(strBo, 1, 2) & "," & trong & dong
ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:=strTemp
 
Upvote 0
Bạn thử thay bằng đoạn code này xem sao.
Mã:
Dim i As Integer
Dim strTemp As String
strTemp = "=" & cauIf
For i = 0 To iNumber - 1
    strTemp = strTemp & cauThe & "=" & Mid(strBo, i * 2 + 1, 2) & ","
Next
[COLOR=blue]strTemp = strTemp & dong & "," & Mid(strBo, 1, 2) & "," & trong & dong[/COLOR]
ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:=strTemp

Tại sao có dòng màu xanh vậy bạn? Sao mình không để & trong & dong vào trong dòng ở giữa vòng For luôn :
strTemp = strTemp & cauThe & "=" & Mid(strBo, i * 2 + 1, 2) & "," & trong & dong

Xin nói để bạn rõ hơn, mình muốn tạo 01 Name động có tên là GhepBo có công thứ như sau :
GhepBo = IF(OR(the= stBo1, the= stBo2,....), stBo1, "")
trong đó stBo1, stBo2,.... được phân tích từ bộ số mình đưa vào. Ví dụ :
Mình đưa vào 01 bộ số như sau : 11-22-33 thì : stBo1 = 11, stBo2 = 22, stBo3 = 33
Đoạn code cụ thể như sau :

PHP:
Sub GhepBo() 
Dim iNumber As Integer, stBo As String, the As String
Dim cauIf As String, cauThe As String
Dim stBo1 As String, stBo2 As String, stBo3 As String, stBo4 As String
Const mo = "("
Const dong = ")"
Const trong = """""" '6 dau nhay
S02.Activate
Range("A24").Select
iNumber = InputBox("????", "So Bo")
stBo = InputBox("???", "Bo")
the = Range("The").Value
cauThe = the & mo & "KqChDv" & dong
cauIf = "If" & mo & "Or" & mo
Select Case iNumber
    Case 1
    stBo = """" & stBo & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo & dong & "," & stBo & "," & trong & dong
 
    Case 2
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Right(stBo, 2): stBo2 = """" & stBo2 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & dong & "," & stBo1 & "," & trong & dong
    Case 3
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Right(stBo, 2): stBo3 = """" & stBo3 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & dong & "," & stBo1 & "," & trong & dong
 
    Case 4
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Mid(stBo, 7, 2): stBo3 = """" & stBo3 & """"
    stBo4 = Right(stBo, 2): stBo4 = """" & stBo4 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & "," _
        & cauThe & "=" & stBo4 & dong & "," & stBo1 & "," & trong & dong
 
    Case 5
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Mid(stBo, 7, 2): stBo3 = """" & stBo3 & """"
    stBo4 = Mid(stBo, 10, 2): stBo4 = """" & stBo4 & """"
    stBo5 = Right(stBo, 2): stBo5 = """" & stBo5 & """"
     ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & "," _
        & cauThe & "=" & stBo4 & "," _
        & cauThe & "=" & stBo5 & dong & "," & stBo1 & "," & trong & dong
 
    Case 6
    stBo1 = Left(stBo, 2): stBo1 = """" & stBo1 & """"
    stBo2 = Mid(stBo, 4, 2): stBo2 = """" & stBo2 & """"
    stBo3 = Mid(stBo, 7, 2): stBo3 = """" & stBo3 & """"
    stBo4 = Mid(stBo, 10, 2): stBo4 = """" & stBo4 & """"
    stBo5 = Mid(stBo, 10, 2): stBo5 = """" & stBo5 & """"
    stBo6 = Right(stBo, 2): stBo6 = """" & stBo6 & """"
    ActiveWorkbook.Names.Add Name:="GhepBo", RefersToR1C1:= _
        "=" & cauIf & cauThe & "=" & stBo1 & "," _
        & cauThe & "=" & stBo2 & "," _
        & cauThe & "=" & stBo3 & "," _
        & cauThe & "=" & stBo4 & "," _
        & cauThe & "=" & stBo5 & "," _
        & cauThe & "=" & stBo6 & dong & "," & stBo1 & "," & trong & dong
End Select
End Sub
Mình muốn dùng vòng For cho nó ngắn lại, không biết có được kg?
 
Upvote 0
Tôi đã đọc code của bạn rồi, vì không có file đính kèm nên chỉ dựa vào code của bạn để viết thôi, bạn cứ thử đoạn code của tôi vào xem có đạt được mục đích không? Cái dòng mà bạn hỏi đương nhiên phải có, vì tất cả các nhánh Case của bạn đều có dòng lệnh này ở cuối, còn tại sao không đưa vào vòng For là vì, vòng For này là để xử lý thay cho các biến stBo(n) của bạn, nên có bao nhiêu biến strBo vòng For sẽ lặp lại bấy nhiêu lần, còn dòng lệnh này lại chỉ có 1 nên không thể cho vào vòng For được. Nếu có thể thì bạn gửi luôn file đó lên sẽ dễ giải quyết hơn.
 
Upvote 0
Web KT

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

Back
Top Bottom