Gán vào Button thì dòng lệnh không hoạt động (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tuanhuycntt

Thành viên chính thức
Tham gia
5/7/15
Bài viết
65
Được thích
5
Các anh/chị chỉ giúp em nguyên nhân tại sao khi e chạy code trong trình soạn thảo VBA = F8 thì code vẫn hoạt động bình thường.
Nhưng gán Button vào code thì lệnh không thực hiện được.

Các bác giúp em với ạ
 

File đính kèm

Các anh/chị chỉ giúp em nguyên nhân tại sao khi e chạy code trong trình soạn thảo VBA = F8 thì code vẫn hoạt động bình thường.
Nhưng gán Button vào code thì lệnh không thực hiện được.

Các bác giúp em với ạ
do xóa cột nên bị lỗi, xóa lỗi
Mã:
Sub FOR_SHEET1()

    Sheet1.Range("E6:G26").ClearContents
    Sheet1.Range("E6").Value = "=COUNTIFS('DATA ?Ã L?C'!B:B,B6,'DATA ?Ã L?C'!D:D,""ANSWERED"")"
    Sheet1.Range("G6").Value = "=COUNTIFS('DATA ?Ã L?C'!B:B,B6)"
    Sheet1.Range("E6:G6").AutoFill Destination:=Range("E6:G26")
End Sub
 
Upvote 0
Em thấy nó lỗi nên đã gán công thức cho các ô E6 và G6 và AutoFill đến dòng cuối. Nhưng khi chạy lệnh bằng F8 thì nó hoạt động vẫn bình thường. Em ko hiểu lý do sao mà gán vào nút nó lại không thực hiện lệnh
bạn nhấn F8 tại mục nào mà nó chạy được thế
thứ nhất tên sheet nếu bạn lập trình vba thì người ta kỵ nhất là đặt tên sheet tiếng việt
công thức của bạn trong vba nó thế này
Mã:
Sub FOR_SHEET1()

    'Range("E6").Value = "=COUNTIFS('DATA ÐÃ L?C'!C[-3],RC[-3],'DATA ÐÃ L?C'!C[-1],""ANSWERED"")"
    Sheet1.Range("E6").Value = "=COUNTIFS('DATA ?Ã L?C'!B:B,B6,'DATA ?Ã L?C'!D:D,""ANSWERED"")"
    Sheet1.Range("G6").Value = "=COUNTIFS('DATA ?Ã L?C'!B:B,B6)"
    Sheet1.Range("E6:G6").AutoFill Destination:=Range("E6:G26")
End Sub
lý do lỗi là no nó không hiểu "DATA ÐÃ L?C" là gì nên lỗi
thử đặt tên sheet lại rồi chạy lại xem
còn nếu không muốn sửa tên sheet lại thì chép code này vào
Mã:
Function UVBA(ByVal Rn As Range) As String
    UVBA = UNItoVBA(Rn.FormulaR1C1)
End Function
Function UNItoVBA(ByRef Val As String) As String
    'Huuthang_bd
    'http://www.giaiphapexcel.com/diendan/threads/t%E1%BA%ADp-h%E1%BB%A3p-h%C3%80m-t%E1%BB%B0-t%E1%BA%A0o-%C4%91%E1%BB%83-l%C3%A0m-th%C6%B0-vi%E1%BB%87n-h%C3%A0m.50873/reply?quote=325712
    Dim str As String, i As Integer, CStart As Integer, CCount As Integer, Status As Boolean
    str = "-225-224-7843-227-7841-259-7855-7857-7859-7861-7863-226-7845-7847-7849-7851-7853-273-233-232-7867-7869-7865-234-7871-7873-7875-7877-7879-237-236-7881-297-7883-243-242-7887-245-7885-244-7889-7891-7893-7895-7897-417-7899-7901-7903-7905-7907-250-249-7911-361-7909-432-7913-7915-7917-7919-7921-253-7923-7927-7929-7925-193-192-7842-195-7840-258-7854-7856-7858-7860-7862-194-7844-7846-7848-7850-7852-272-201-200-7866-7868-7864-202-7870-7872-7874-7876-7878-205-204-7880-296-7882-211-210-7886-213-7884-212-7888-7890-7892-7894-7896-416-7898-7900-7902-7904-7906-218-217-7910-360-7908-431-7912-7914-7916-7918-7920-221-7922-7926-7928-7924-10-"
    Dim mTex As String
    mTex = Val
    For i = 1 To Len(mTex)
        If InStr(str, "-" & AscW(Mid$(mTex, i, 1)) & "-") = 0 Then 'neu ma ma AscW cua ky tu do ko co trong ma nguon
            If Not Status Then
                CStart = i
                Status = True
            End If
            CCount = CCount + 1
        Else
            If Status Then UNItoVBA = UNItoVBA & IIf(UNItoVBA = "", "", " & ") & """" & Replace(Mid$(mTex, CStart, CCount), """", """""") & """"
            Status = False
            CCount = 0
            UNItoVBA = UNItoVBA & IIf(UNItoVBA = "", "", " & ") & "ChrW(" & AscW(Mid$(mTex, i, 1)) & ")"
        End If
    Next
    If Status Then UNItoVBA = UNItoVBA & IIf(UNItoVBA = "", "", " & ") & """" & Replace(Mid$(mTex, CStart, CCount), """", """""") & """"
End Function
trên sheet bạn gõ hàm =UVBA(E6) với =UVBA(G6) xong rồi copy kết quả nó thay thế cho 2 dòng này
Mã:
    Sheet1.Range("E6").Value = "=COUNTIFS('DATA ?Ã L?C'!B:B,B6,'DATA ?Ã L?C'!D:D,""ANSWERED"")"
    Sheet1.Range("G6").Value = "=COUNTIFS('DATA ?Ã L?C'!B:B,B6)"
thay thế thành
Mã:
    Sheet1.Range("E6").Value = "=COUNTIFS('DATA " & ChrW(272) & ChrW(195) & " L" & ChrW(7884) & "C'!C[-3],RC[-3],'DATA " & ChrW(272) & ChrW(195) & " L" & ChrW(7884) & "C'!C[-1],""ANSWERED"")"

    Sheet1.Range("G6").Value = "=COUNTIFS('DATA " & ChrW(272) & ChrW(195) & " L" & ChrW(7884) & "C'!C[-5],RC[-5])"
nếu bạn đã biết trước được vùng này Range("E6:G26")
thì tại sao lại không gán thẳng vào luôn mà lại dùng AutoFill
Sheet1.Range("E6").Resize(20,1).FormulaR1C1 = gì gì đó
 
Upvote 0
Web KT

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

Back
Top Bottom