Sửa lỗi runtime 91

thang_nguyen1

Thành viên mới
Tham gia ngày
6 Tháng mười 2016
Bài viết
24
Được thích
2
Điểm
165
Tuổi
27
Các pro cho mình hỏi, mình viết code như bị lỗi runtime erorr 91, các bạn sửa giup mình, mình hỏi thêm là mình muốn viết , ví dụ : range a1 bằng với range a2 thì viết như trên có đúng ko. có cách nào viết tốt hơn ko. mong m.n cho ý kiến
Capture.JPG
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
705
Được thích
560
Điểm
860
Các pro cho mình hỏi, mình viết code như bị lỗi runtime erorr 91, các bạn sửa giup mình, mình hỏi thêm là mình muốn viết , ví dụ : range a1 bằng với range a2 thì viết như trên có đúng ko. có cách nào viết tốt hơn ko. mong m.n cho ý kiến
View attachment 246335
Tôi giả sử bạn dùng Check box (form control) trên sheet "Diem Thi" nha.
Check box có giá trị 1 là ON, 0 là OFF
Mã:
Sub Update()
    With Sheets("Diem Thi")
        If .Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then
            .Range("C3").Value = .Range("AE177").Value
        Else
            .Range("C3").Value = .Range("AE174").Value
        End If
    End With
End Sub
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,726
Được thích
53,530
Điểm
11,910
Tôi giả sử bạn dùng Check box (form control) trên sheet "Diem Thi" nha.
Check box có giá trị 1 là ON, 0 là OFF
Mã:
Sub Update()
    With Sheets("Diem Thi")
        If .Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then
            .Range("C3").Value = .Range("AE177").Value
        Else
            .Range("C3").Value = .Range("AE174").Value
        End If
    End With
End Sub
Checkbox là checkbox, sao lại xem nó là Shape vậy bạn?
Với CheckBox thuộc form controls, bạn khai báo như vầy nha:
Mã:
Dim chk As CheckBox
Set chk = Sheets("Diem Thi").CheckBoxes("Check box 1")
chk.Value = .....
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
705
Được thích
560
Điểm
860
Checkbox là checkbox, sao lại xem nó là Shape vậy bạn?
Với CheckBox thuộc form controls, bạn khai báo như vầy nha:
Mã:
Dim chk As CheckBox
Set chk = Sheets("Diem Thi").CheckBoxes("Check box 1")
chk.Value = .....
Dạ, chính vì thế mà nó có thêm cái ".OLEFormat.Object" nữa ạ.
vì em làm vậy thì nếu là cái khác (ví dụ: Option...) thì nó vẫn đúng nên em dùng vậy đó giờ luôn .
 

thang_nguyen1

Thành viên mới
Tham gia ngày
6 Tháng mười 2016
Bài viết
24
Được thích
2
Điểm
165
Tuổi
27
Checkbox là checkbox, sao lại xem nó là Shape vậy bạn?
Với CheckBox thuộc form controls, bạn khai báo như vầy nha:
Mã:
Dim chk As CheckBox
Set chk = Sheets("Diem Thi").CheckBoxes("Check box 1")
chk.Value = .....
Thầy có thể giúp em viết code được ko ạ. Em cảm ơn
 

thang_nguyen1

Thành viên mới
Tham gia ngày
6 Tháng mười 2016
Bài viết
24
Được thích
2
Điểm
165
Tuổi
27
Tôi giả sử bạn dùng Check box (form control) trên sheet "Diem Thi" nha.
Check box có giá trị 1 là ON, 0 là OFF
Mã:
Sub Update()
    With Sheets("Diem Thi")
        If .Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then
            .Range("C3").Value = .Range("AE177").Value
        Else
            .Range("C3").Value = .Range("AE174").Value
        End If
    End With
End Sub
Nó bị lỗi bạn ơi
 

thang_nguyen1

Thành viên mới
Tham gia ngày
6 Tháng mười 2016
Bài viết
24
Được thích
2
Điểm
165
Tuổi
27

File đính kèm

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
705
Được thích
560
Điểm
860
Cái check box viết trong modun hay trên sheet, em chưa rõ mong thầy giúp em
Bài đã được tự động gộp:


đây bạn ơi
lấy code này:
Mã:
Private Sub CheckBox1_Click()
With Sheets("Trang_tính1")
        If .CheckBox1.Value = True Then
            .Range("C3").Value = .Range("C4").Value
        Else
            .Range("C3").Value = .Range("C5").Value
        End If
    End With
End Sub
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,726
Được thích
53,530
Điểm
11,910
Cái check box viết trong modun hay trên sheet, em chưa rõ mong thầy giúp em
Bài đã được tự động gộp:


đây bạn ơi
Với file của bạn thì chỉ cần code vầy:
Mã:
Private Sub CheckBox1_Click()
  Range("C3").Value = Range("C5").Offset(CheckBox1.Value).Value
End Sub
He... he...
 

huuthang_bd

Chuyên gia GPE
Tham gia ngày
10 Tháng chín 2008
Bài viết
7,961
Được thích
9,305
Điểm
860
Nơi ở
TP.HCM
Sao không dùng sự kiện Change mà dùng sự kiện Click nhỉ. Change sẽ giảm số lần thực thi không cần thiết.
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
705
Được thích
560
Điểm
860
Nhắn @thang_nguyen1 :
Bạn phải biết là mình dùng Checkbox là của Form Control hay là ActiveX mà truy vấn value của nó.
Như file bạn gởi thì bạn dùng CheckBox ActiveX, còn file mình làm ví dụ cho bạn là CheckBox Form control.
Mỗi loại có cách lấy value khác nhau.

1/ ActiveX Checkbox:
Mã:
ActiveSheet.CheckBox1.Value
hoặc
Mã:
ActiveSheet.OLEObjects("CheckBox1").Object.Value
2/ Form Control CheckBox:
Mã:
ActiveSheet.Shapes("Check Box 1").OLEFormat.Object.Value
hoặc
Mã:
ActiveSheet.Shapes("Check Box 1").ControlFormat.Value
hoặc
Mã:
ActiveSheet.CheckBoxes("Check Box 1").Value
 

batman1

Thành viên gạo cội
Tham gia ngày
8 Tháng chín 2014
Bài viết
3,667
Được thích
5,666
Điểm
560
Nhắn @thang_nguyen1 :
Bạn phải biết là mình dùng Checkbox là của Form Control hay là ActiveX mà truy vấn value của nó.
Như file bạn gởi thì bạn dùng CheckBox ActiveX, còn file mình làm ví dụ cho bạn là CheckBox Form control.
Do các bạn không để ý thôi. Người ta viết rõ mà: if CheckBox1 = true then
 

thang_nguyen1

Thành viên mới
Tham gia ngày
6 Tháng mười 2016
Bài viết
24
Được thích
2
Điểm
165
Tuổi
27
lấy code này:
Mã:
Private Sub CheckBox1_Click()
With Sheets("Trang_tính1")
        If .CheckBox1.Value = True Then
            .Range("C3").Value = .Range("C4").Value
        Else
            .Range("C3").Value = .Range("C5").Value
        End If
    End With
End Sub
cảm ơn bạn nhiều
Bài đã được tự động gộp:

Với file của bạn thì chỉ cần code vầy:
Mã:
Private Sub CheckBox1_Click()
  Range("C3").Value = Range("C5").Offset(CheckBox1.Value).Value
End Sub
He... he...
thank thầy. cách của thầy rất hay ạ
 
Top Bottom