VBA có thay đổi cách viết trên Win 10 không?

Liên hệ QC

vubinh099

Thành viên mới
Tham gia
30/10/15
Bài viết
43
Được thích
4
Chào ACE GPE,
Tình hình em có 1 file excel viết bằng VBA và cho nhiều người sử dụng (nhiều file excel kết nối 1 file data), mà chạy trên các máy Win7 32bit và 64bit đều chạy bình thường, mà các máy mới hơn cụ thể là Win10 lại không chạy được và báo lỗi. Cụ thể ở 1 đoạn code:
Mã:
Private Sub BaoCao_AddSubTotal()
'Them dong sub Tong
    lr = Sheet10.Cells(Rows.Count, "D").End(3).Row
    
    'them dong Sub Tong
    If lr >= 7 Then
        dArr = Range("B7:W" & lr + 1)
        ReDim Arr(1 To (UBound(dArr) * 2), 1 To 22)
        k = 0
        For i = 1 To UBound(dArr) - 1
            k = k + 1
            If dArr(i, 3) <> dArr(i + 1, 3) Then
            k = k + 1
            For j = 1 To 22
                Arr(k, j) = dArr(i, j)
            Next j
            Arr(k - 1, 3) = dArr(i, 3)
            Arr(k - 1, 4) = dArr(i, 4)
            Arr(k - 1, 5) = dArr(i, 5)
            Else
            For j = 1 To 22
                Arr(k + 1, j) = dArr(i, j)
            Next j
            Arr(k, 3) = dArr(i, 3)
            Arr(k, 4) = dArr(i, 4)
            Arr(k, 5) = dArr(i, 5)
            End If
        Next i
        Range("B7.W7").Resize(k) = Arr
    End If
End Sub

Tại dòng "Range("B7.W7").Resize(k) = Arr" bị báo lỗi Method 'Range' of object "_Global" failed

Thì câu hỏi đặt ra là VBA trên Win 10 có thay đổi gì không và em phải làm như thế nào để có cùng ngôn ngữ với Win7 lẫn Win10, update VBA, update Office, hay phải update lên hẳn Win10 luôn, và cách viết code trên 2 win (phiên bản VBA mới hơn có khác cách viết code không, em đang dùng VBA 7.1 Version 1048, win7 64 bit)

Mong các anh chị tư vấn giúp em với,

Cám ơn nhiều ạ!
 
ACE = Anh Chích Em hả?

---
dArr = Sheet10.Range("B7:W" & lr + 1).value2
For i = 1 To UBound(dArr) - 1

Khi vùng cần xử lý chỉ có 1 cột mới cần bẫy lỗi +- 1 kia.

---
Thay dòng này
Range("B7.W7").Resize(k) = Arr

bằng
If K>0 then Sheet10.Range("B7").Resize(k, ubound(Arr,2)).value = Arr

(Hoặc: If K>0 then Sheet10.Range("B7:W7").Resize(k).value = Arr )
---
Không liên quan Windows nào cả.
 
Upvote 0
VBA đâu có thay đổi gì qua các phiên bản hệ điều hành, có chăng là đi sâu 1 chút là phụ thuộc vào phiên bản 32 hoặc 64 bit.
 
Upvote 0
ACE = Anh Chích Em hả?

---
dArr = Sheet10.Range("B7:W" & lr + 1).value2
For i = 1 To UBound(dArr) - 1

Khi vùng cần xử lý chỉ có 1 cột mới cần bẫy lỗi +- 1 kia.

---
Thay dòng này
Range("B7.W7").Resize(k) = Arr

bằng
If K>0 then Sheet10.Range("B7").Resize(k, ubound(Arr,2)).value = Arr

(Hoặc: If K>0 then Sheet10.Range("B7:W7").Resize(k).value = Arr )
---
Không liên quan Windows nào cả.
Cám ơn anh đã giúp ạ, anh befaint có sdt hay có cách nào nhắn tin với anh không ạ, em liên hệ nhờ anh giúp đỡ tí được không ạ, em bấm vào message mà bị báo lỗi.
 
Upvote 0
Cám ơn anh đã giúp ạ, anh befaint có sdt hay có cách nào nhắn tin với anh không ạ, em liên hệ nhờ anh giúp đỡ tí được không ạ, em bấm vào message mà bị báo lỗi.

Bạn cứ đăng bài luôn ở đây để nhiều người cùng tham gia được mà.
 
Upvote 0
Bạn cứ đăng bài luôn ở đây để nhiều người cùng tham gia được mà.
Chào Anh, trong file của em đang có 1 lỗi:
Em viết 1 đoạn code sau trong form:

Private Sub cmdOk_Click()
MsgBox TextBox2
End Sub

Khi nhập giá trị "abc" vào textbox2 thì sẽ msgbox ra là "abc". Mà máy lại hiển thị ra "???".

Em không hiểu đang bị lỗi chổ nào, anh giúp em với.

Cảm ơn anh!
 
Upvote 0
Khi em để PasswordChar là "*" tại properties của Textbox2 trong form, thì máy cho ra giá trị nhập vào textbox2 là ?, còn để rỗng thì hiện bình thường. Và chỉ đang có 1 máy lỗi, còn máy khác không lỗi.

MsgBox Me.TextBox2.Value
Range("A1").value = Me.Textbox2.Value

Gửi file lên đi bạn.
 
Upvote 0
MsgBox Me.TextBox2.Value
Range("A1").value = Me.Textbox2.Value

Gửi file lên đi bạn.
file của em hay lỗi ở nhiều máy khác nhau, có 1 số lỗi em vẫn chưa tìm ra được nguyên nhân và phải bẫy lỗi chuyển từ ADO sang VBA code, em không kiểm soát được cho đến khi 1 máy nào đó la lên là bị lỗi. hix
Bài đã được tự động gộp:

file của em hay lỗi ở nhiều máy khác nhau, có 1 số lỗi em vẫn chưa tìm ra được nguyên nhân và phải bẫy lỗi chuyển từ ADO sang VBA code, em không kiểm soát được cho đến khi 1 máy nào đó la lên là bị lỗi. hix
pass đăng nhập: adminm
 
Upvote 0
hay lỗi ở nhiều máy khác nhau

File quá nhiều rác. Dọn sạch rác là hết bệnh.

Bạn viết code tường minh, rõ ràng đi, gọi thuộc tính/ phương thức nào của đối tượng thì phải gọi cụ thể.

Ví dụ: Me.Textbox1.Text, Me.Textbox1.Value, Sheet2.Range("N2").Value, Sheet2.Range("N2").Text, Sheet2.Range("N2").Value2

1650015608565.png

1650015550517.png
 
Upvote 0
File quá nhiều rác. Dọn sạch rác là hết bệnh.

Bạn viết code tường minh, rõ ràng đi, gọi thuộc tính/ phương thức nào của đối tượng thì phải gọi cụ thể.

Ví dụ: Me.Textbox1.Text, Me.Textbox1.Value, Sheet2.Range("N2").Value, Sheet2.Range("N2").Text, Sheet2.Range("N2").Value2

View attachment 274523

View attachment 274522
ok, để em sửa lại, cảm ơn Anh đã giúp đỡ!
 
Upvote 0
Web KT

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

Back
Top Bottom