Lỗi Type mismatch.

Liên hệ QC

emgaingayngo

Thành viên hoạt động
Tham gia
9/2/07
Bài viết
141
Được thích
5
PHP:
Sub Chap2Cua81()
 Dim j1 As Long, j2 As Long, j3 As Long, GPE12 As String, k As Long
 Dim mangKq(3239) As String
 Dim TG As Double
 GPE12 = Range("C1").Value
 TG = Timer
 For j1 = 1 To 81
   For j2 = j1 + 1 To 81
         mangKq(k) = Mid(GPE12, j1, 1) & Mid(GPE12, j2, 1)
         k = k + 1
 Next j2, j1
 Range("A1:A3240").Value = Application.WorksheetFunction.Transpose(mangKq)
 MsgBox Timer - TG
End Sub


PHP:
Sub Chap3Cua81()
 Dim j1 As Long, j2 As Long, j3 As Long, GPE12 As String, k As Long
 Dim mangKq(85319) As String
 Dim TG As Double
 GPE12 = Range("C1").Value
 TG = Timer
 For j1 = 1 To 81
   For j2 = j1 + 1 To 81
      For j3 = j2 + 1 To 81
         mangKq(k) = Mid(GPE12, j1, 1) & Mid(GPE12, j2, 1) & Mid(GPE12, j3, 1)
         k = k + 1
 Next j3, j2, j1
 Range("A1:A85320").Value = Application.WorksheetFunction.Transpose(mangKq)
 MsgBox Timer - TG
End Sub

Đoạn mã trên chạy thì OK, đoạn dưới chạy thì bị báo lỗi type mismatch.
Xin chỉ giúp tôi cách khắc phục.
 

File đính kèm

PHP:
Sub Chap3Cua81()
 Dim j1 As Long, j2 As Long, j3 As Long, GPE12 As String, k As Long
 Dim mangKq(85319) As String
 Dim TG As Double
 GPE12 = Range("C1").Value
 TG = Timer
 For j1 = 1 To 81
   For j2 = j1 + 1 To 81
      For j3 = j2 + 1 To 81
         mangKq(k) = Mid(GPE12, j1, 1) & Mid(GPE12, j2, 1) & Mid(GPE12, j3, 1)
         k = k + 1
 Next j3, j2, j1
 Range("A1:A85320").Value = Application.WorksheetFunction.Transpose(mangKq)
 MsgBox Timer - TG
End Sub
Đoạn mã trên chạy thì OK, đoạn dưới chạy thì bị báo lỗi type mismatch.
Xin chỉ giúp tôi cách khắc phục.
Đoán: Có lẽ TRANSPOSE bị "quá tải" chăng? Vậy thì đừng dùng nó nữa, gán dữ liệu vào mảng 2 chiều luôn đi
PHP:
Sub Chap3Cua81()
  Dim j1 As Long, j2 As Long, j3 As Long, GPE12 As String, k As Long
  Dim mangKq(1 To 531441, 1 To 1) As String
  Dim TG As Double
  GPE12 = Range("C1").Value
  TG = Timer
  For j1 = 1 To 81
    For j2 = j1 + 1 To 81
      For j3 = j2 + 1 To 81
        k = k + 1
        mangKq(k, 1) = Mid(GPE12, j1, 1) & Mid(GPE12, j2, 1) & Mid(GPE12, j3, 1)
  Next j3, j2, j1
  Range("A1:A85320").Value = mangKq
  MsgBox Timer - TG
End Sub
 
Upvote 0
Mảng 1 chiều có 1 giới hạn về số phần tử. Bạn tạo mảng 1 chiều 85320 phần tử nên bị lỗi. Nếu khai báo lại mảng 2 chiều 85320 dòng, 1 cột sẽ hết lỗi.

Hic, chậm 1 bước rồi!
 
Upvote 0
Mảng 1 chiều có 1 giới hạn về số phần tử. Bạn tạo mảng 1 chiều 85320 phần tử nên bị lỗi. Nếu khai báo lại mảng 2 chiều 85320 dòng, 1 cột sẽ hết lỗi.

Hic, chậm 1 bước rồi!
Em không nghĩ con số 85320 chính là giới hạn cuối cùng
Ví dụ:
PHP:
Sub Test()
  Dim i As Long, kq(1 To 85320)
  For i = 1 To 85320
    kq(i) = i
  Next
End Sub
Code chạy OK, chẳng thấy lỗi gì xuất hiện cả
Nhưng nếu sửa thành vầy thì toi
PHP:
Sub Test()
  Dim i As Long, kq(1 To 85320), Arr
  For i = 1 To 85320
    kq(i) = i
  Next
  Arr = WorksheetFunction.Transpose(kq)
End Sub
Chính vì thế, em nghĩ cái "giới hạn" ở đây nằm ở TRANSPOSE
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom