Sửa lỗi runtime 91

Liên hệ QC

thang_nguyen1

Thành viên hoạt động
Tham gia
6/10/16
Bài viết
116
Được thích
4
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
 
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
 
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 = .....
 
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 .
 
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
 

File đính kèm

  • Checkbox.xlsm
    19.6 KB · Đọc: 6
  • Checkbox.xlsm
    19.6 KB · Đọc: 1
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
 
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...
 
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.
 
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
 
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
 
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 ạ
 
Web KT
Back
Top Bottom