Ý của bạn là sử dụng các phép toán AND, OR ở trong tham số expr ấy à? Việc này hoàn toàn có thể.Mọi người cho hỏi có dùng được các toán tử logic đối với hàm IIF(expr, truepart, falsepart) được không?
Nếu được xin cho ví dụ tham khảo?
Tks!
Ý của bạn là sử dụng các phép toán AND, OR ở trong tham số expr ấy à? Việc này hoàn toàn có thể.
Một ví dụ đơn giản:
[GPECODE=vb]Sub Test()
With Sheets("Sheet1")
.[C1] = IIf(.[A1] = "GPE" And .[B1] > 5, 1, 2)
End With
End Sub[/GPECODE]
Khi chạy code, nếu ô A1 của Sheet1 có giá trị là "GPE" và ô B1 có giá trị >5 thì ô C1 sẽ nhận giá trị là 1, ngược lại thì C1 nhận giá trị là 2.
Trong VBA, AND, OR là những phép toán chứ không phải hàm nên cú pháp của nó không giống như cú pháp của hàm.Cảm ơn bạn
Mình viết sai nên cứ thắc mắc làm sao lại không chạy.
Lẽ ra phải viết = IIF(dk1 And dk2, truepart, falsepart) thì cứ nghĩ là IIF(and(dk1, dk2), truepart, falsepart)
Tks again.
Trong VBA, AND, OR là những phép toán chứ không phải hàm nên cú pháp của nó không giống như cú pháp của hàm.
If Left(cbx, 1) <> "-" Then
If Right(cbx, 1) <> "." Then
cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) & "."
Else
If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then
cbx = Replace(cbx, Right(cbx, 2), ".")
End If
cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2)
End If
Else
If Mid(cbx, 2, 1) <> " " Then
cbx = Replace(cbx, Left(cbx, 1), "- ")
End If
If Right(cbx, 1) <> "." Then
cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) & "."
Else
If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then
cbx = Replace(cbx, Right(cbx, 2), ".")
End If
cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4)
End If
End If
Tôi thấy để nguyên như vậy hay hơn đấy, trông dài dòng nhưng rõ ràng hơn, và tôi nghĩ rằng nó sẽ chạy nhanh hơn là lồng tất cả những gì trong code trên vào các hàm IIF.Bạn có thể giúp mình sửa đoạn code này chỉ 1 dòng dùng IIF lồng vào nhau không? đoạn này dùng trong word để sửa câu cú người dùng nhập vào combobox thôi
Mã:If Left(cbx, 1) <> "-" Then If Right(cbx, 1) <> "." Then cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) & "." Else If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then cbx = Replace(cbx, Right(cbx, 2), ".") End If cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) End If Else If Mid(cbx, 2, 1) <> " " Then cbx = Replace(cbx, Left(cbx, 1), "- ") End If If Right(cbx, 1) <> "." Then cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) & "." Else If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then cbx = Replace(cbx, Right(cbx, 2), ".") End If cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) End If End If
Bạn thích thì cũng tập tành sửa cho bạnBạn có thể giúp mình sửa đoạn code này chỉ 1 dòng dùng IIF lồng vào nhau không? đoạn này dùng trong word để sửa câu cú người dùng nhập vào combobox thôi
Mã:If Left(cbx, 1) <> "-" Then If Right(cbx, 1) <> "." Then cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) & "." Else If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then cbx = Replace(cbx, Right(cbx, 2), ".") End If cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) End If Else If Mid(cbx, 2, 1) <> " " Then cbx = Replace(cbx, Left(cbx, 1), "- ") End If If Right(cbx, 1) <> "." Then cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) & "." Else If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then cbx = Replace(cbx, Right(cbx, 2), ".") End If cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) End If End If
cbx = IIf(Left(cbx, 1) <> "-", _
IIf(Right(cbx, 1) <> ".", _
"- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) & ".", _
IIf(Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = ".", _
Replace(cbx, Right(cbx, 2), "."), _
"- " & UCase(Left(cbx, 1)) & Mid(cbx, 2))), _
IIf(Mid(cbx, 2, 1) <> " ", _
Replace(cbx, Left(cbx, 1), "- "), _
IIf(Right(cbx, 1) <> ".", _
Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) & ".", _
IIf(Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = ".", _
Replace(cbx, Right(cbx, 2), "."), _
Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4)))))
Bạn thích thì cũng tập tành sửa cho bạn
Chú ý: Rối rắm ko bảo trì được code hay máy bị treo thì cấm "kêu". hic
Mã:cbx = IIf(Left(cbx, 1) <> "-", _ IIf(Right(cbx, 1) <> ".", _ "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) & ".", _ IIf(Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = ".", _ Replace(cbx, Right(cbx, 2), "."), _ "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2))), _ IIf(Mid(cbx, 2, 1) <> " ", _ Replace(cbx, Left(cbx, 1), "- "), _ IIf(Right(cbx, 1) <> ".", _ Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) & ".", _ IIf(Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = ".", _ Replace(cbx, Right(cbx, 2), "."), _ Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4)))))
Mình không rành VBA nên thường xài mấy cái đơn giản, đọc vào hiểu liềnMọi người cho hỏi có dùng được các toán tử logic đối với hàm IIF(expr, truepart, falsepart) được không?
Nếu được xin cho ví dụ tham khảo?
Tks!
Sub Test()
If [A1] = 1 Then
If [B1] > 5 Then [C1] = 1
Else
[C1] = 2
End If
End Sub
Trong VBA, AND, OR là những phép toán chứ không phải hàm nên cú pháp của nó không giống như cú pháp của hàm.
Bạn có thể giúp mình sửa đoạn code này chỉ 1 dòng dùng IIF lồng vào nhau không? đoạn này dùng trong word để sửa câu cú người dùng nhập vào combobox thôi
Mã:If Left(cbx, 1) <> "-" Then If Right(cbx, 1) <> "." Then cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) & "." Else If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then cbx = Replace(cbx, Right(cbx, 2), ".") End If cbx = "- " & UCase(Left(cbx, 1)) & Mid(cbx, 2) End If Else If Mid(cbx, 2, 1) <> " " Then cbx = Replace(cbx, Left(cbx, 1), "- ") End If If Right(cbx, 1) <> "." Then cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) & "." Else If Left(Right(cbx, 2), 1) = " " Or Left(Right(cbx, 2), 1) = "." Then cbx = Replace(cbx, Right(cbx, 2), ".") End If cbx = Left(cbx, 2) & UCase(Mid(cbx, 3, 1)) & Mid(cbx, 4) End If End If