|
请修改程序
把工作簿GFC3工作表2中12个数字进行组合,组合结果放到工作簿GFC301工作表5内
Set sh1 = Workbooks("GFC3.xlsm").Sheets(EE1) 出现下标越界
ReDim brr(1 To d.Count, 1 To 12) 也出错
数据组合程序是正确的
- Private Sub CommandButton1_Click()
- Call 组合数据_Click
- End Sub
- Private Sub 组合数据_Click()
-
- Workbooks.Open ThisWorkbook.Path & "\GFC301.xlsm"
- Workbooks("GFC301.xlsm").Sheets("5").Select
- Workbooks("GFC301.xlsm").Sheets("5").Cells.Clear
-
- EE1 = "2": EE2 = "5": EE3 = 301 'EE1、EE2、EE3 是变量
-
-
- 组合7 EE1, EE2, EE3
-
- ' Sheets("3").Cells.Clear 这行貌似多于。。。
- End Sub
- Sub 组合7(EE1, EE2, EE3)
- Dim sh1, sh2 As Worksheet
- Set sh1 = Workbooks("GFC3.xlsm").Sheets(EE1) 'EE1是变量
- Set sh2 = Workbooks("GFC" & EE3 & ".xlsm").Sheets(EE2) 'EE2、EE3 是变量
- Dim arr, i&, R%, s(), j&, i1&, i2&, i3&, i4&, i5&, x$, y%
- Dim d, k, brr
- Set d = CreateObject("Scripting.Dictionary")
-
- arr = sh1.Range(sh1.Cells(1, 1), sh1.Cells(1, 12))
- Debug.Print sh1.Range(sh1.Cells(1, 1), sh1.Cells(1, 12)).Address(False, False)
-
- For i = 1 To UBound(arr)
- For j = 1 To UBound(arr, 2)
- If arr(i, j) <> "" Then
- R = R + 1
- ReDim Preserve s(1 To R)
- s(R) = arr(i, j)
- End If
- Next
- If R >= 7 Then
- For i1 = 1 To R - 6
- For i2 = i1 + 1 To R - 5
- For i3 = i2 + 1 To R - 4
- For i4 = i3 + 1 To R - 3
- For i5 = i4 + 1 To R - 2
- For i6 = i5 + 1 To R - 1
- For i7 = i6 + 1 To R
- x = s(i1) & "," & s(i2) & "," & s(i3) & "," & s(i4) & "," & s(i5) & "," & s(i6) & "," & s(i7)
- d(x) = ""
- Next
- Next
- Next
- Next
- Next
- Next
- Next
- End If
- R = 0
- Next
- k = d.keys
- ReDim brr(1 To d.Count, 1 To 12)
- For i = 0 To UBound(k)
- aa = Split(k(i), ",")
- For j = 0 To UBound(aa)
- brr(i + 1, aa(j)) = aa(j)
- Next
- Next
- sh2.Cells(1, 1).Resize(UBound(brr), 12) = brr
- d.RemoveAll
- End Sub
复制代码改动的地方挺多的,你自己参照这看看吧。
|
|