Thanh Bình PV
Thành viên hoạt động
- Tham gia
- 30/10/19
- Bài viết
- 151
- Được thích
- 19
Em có 1 Form gồm 3 RefEdit và 1 Button.
1. RefEdit1 sẽ chỉ chọn trong vùng từ cột B tới cột H (bắt buộc từ cột B tới cột H)
2. RefEdit2 sẽ chỉ chọn trong vùng từ cột D tới cột K (bắt buộc từ cột D tới cột K)
3. RefEdit3 sẽ chỉ chọn trong vùng từ cột C tới cột F (bắt buộc từ cột C tới cột F)
Em có sử dụng hàm tại bài #3 này. Nhưng nếu ở RefEdit1 em chọn từ cột C tới cột F thì kết quả trả về true. tương tự với RefEdit2 và RefEdit3.
Cụ thể code em muốn như sau:
Chỉ cần 1 trong 3 RefEdit có giá trị thì sẽ gọi các sub tương ứng..
RefEdit1 có giá trị => gọi sub ABC
RefEdit2 có giá trị => gọi sub BBB
RefEdit3 có giá trị => gọi sub AAA
Ví dụ:
- RefEdit1 = "B1:H20" , RefEdit2 = "" , RefEdit3 = "" thì sẽ gọi sub ABC.
- RefEdit1 = "B1:H20" , RefEdit2 = "D1:K50" , RefEdit3 = "" thì sẽ gọi sub ABC và sub BBB
Và sẽ thông báo 1 lần là File 1 (RefEdit1) - File 2 (RefEdit2) Hoan Thanh !!!
Trường hợp nếu chọn sai cột thì sẽ thông báo lỗi.
Mong các anh/chị giúp em ạ.
- Hàm kiểm tra phạm vi
- Code trong Form:
1. RefEdit1 sẽ chỉ chọn trong vùng từ cột B tới cột H (bắt buộc từ cột B tới cột H)
2. RefEdit2 sẽ chỉ chọn trong vùng từ cột D tới cột K (bắt buộc từ cột D tới cột K)
3. RefEdit3 sẽ chỉ chọn trong vùng từ cột C tới cột F (bắt buộc từ cột C tới cột F)
Em có sử dụng hàm tại bài #3 này. Nhưng nếu ở RefEdit1 em chọn từ cột C tới cột F thì kết quả trả về true. tương tự với RefEdit2 và RefEdit3.
Cụ thể code em muốn như sau:
Chỉ cần 1 trong 3 RefEdit có giá trị thì sẽ gọi các sub tương ứng..
RefEdit1 có giá trị => gọi sub ABC
RefEdit2 có giá trị => gọi sub BBB
RefEdit3 có giá trị => gọi sub AAA
Ví dụ:
- RefEdit1 = "B1:H20" , RefEdit2 = "" , RefEdit3 = "" thì sẽ gọi sub ABC.
- RefEdit1 = "B1:H20" , RefEdit2 = "D1:K50" , RefEdit3 = "" thì sẽ gọi sub ABC và sub BBB
Và sẽ thông báo 1 lần là File 1 (RefEdit1) - File 2 (RefEdit2) Hoan Thanh !!!
Trường hợp nếu chọn sai cột thì sẽ thông báo lỗi.
Mong các anh/chị giúp em ạ.
- Hàm kiểm tra phạm vi
Mã:
Function InRange(Rng1, rng2) As Boolean
' Returns True if rng1 is a subset of rng2
InRange = False
If Rng1.Parent.Parent.Name = rng2.Parent.Parent.Name Then
If Rng1.Parent.Name = rng2.Parent.Name Then
If Union(Rng1, rng2).Address = rng2.Address Then
InRange = True
End If
End If
End If
End Function
Mã:
Private Sub CommandButton1_Click()
Dim kiemtra_1 As Boolean, kiemtra_2 As Boolean, kiemtra_3 As Boolean
Dim kq1 As String, kq2 As String, kq3 As String
Dim ValidRange1 As Range, ValidRange2 As Range, ValidRange3 As Range, UserRange1 As Range, UserRange2 As Range, UserRange3 As Range
On Error Resume Next
Set ValidRange1 = Range("B1:H10000")
Set ValidRange2 = Range("D1:K10000")
Set ValidRange3 = Range("C1:F10000")
Set UserRange1 = Range(RefEdit1.Value)
Set UserRange2 = Range(RefEdit2.Value)
Set UserRange3 = Range(RefEdit3.Value)
If RefEdit1.Value <> "" Then
If InRange(UserRange1, ValidRange1) = True Then
kiemtra_1 = True
Call ABC
Else
kiemtra_1 = False
End If
End If
If RefEdit2.Value <> "" Then
If InRange(UserRange2, ValidRange2) = True Then
kiemtra_2 = True
Call BBB
Else
kiemtra_2 = False
End If
End If
If RefEdit3.Value <> "" Then
If InRange(UserRange3, ValidRange3) = True Then
kiemtra_3 = True
Call AAA
Else
kiemtra_3 = False
End If
End If
If kiemtra_1 = True Then kq1 = "File 1"
If kiemtra_2 = True Then kq2 = "File 2"
If kiemtra_3 = True Then kq3 = "File 3"
Select Case True
Case kiemtra_1
MsgBox kq1 & " - " & kq2 & " - " & kq3 & " - " & " Hoan Thanh!!!"
Case kiemtra_2
MsgBox kq1 & " - " & kq2 & " - " & kq3 & " - " & " Hoan Thanh!!!"
Case kiemtra_3
MsgBox kq1 & " - " & kq2 & " - " & kq3 & " - " & " Hoan Thanh!!!"
End Select
If RefEdit1.Value = "" And RefEdit2.Value = "" And RefEdit3.Value = "" Then
MsgBox "Vui long nhap gia tri."
End If
If kiemtra_1 = False Then MsgBox "Loi cot !!!" & vbNewLine & "Ghi chu: chi tu cot B toi H"
If kiemtra_2 = False Then MsgBox "Loi cot !!!" & vbNewLine & "Ghi chu: chi tu cot D toi K"
If kiemtra_3 = False Then MsgBox "Loi cot !!!" & vbNewLine & "Ghi chu: chi tu cot C toi F"
End Sub
Sub ABC()
MsgBox "ABC"
End Sub
Sub BBB()
MsgBox "BBB"
End Sub
Sub AAA()
MsgBox "AAA"
End Sub
Private Sub RefEdit1_Change()
On Error Resume Next
Dim Rng1 As Range, RngAdd1 As String, RngAdd2 As String
RngAdd1 = Me.RefEdit1.Value
Set Rng1 = Range(RngAdd1)
If Not Rng1 Is Nothing Then
RngAdd2 = Rng1.Address
If RngAdd2 <> RngAdd1 Then Me.RefEdit1.Value = RngAdd2
End If
End Sub
File đính kèm
Lần chỉnh sửa cuối: