Excel 表格无法拆分行,报错9下标越界

无法拆分行,如何解决,我电脑小白,代码也看不懂啊啊啊啊啊啊

第1个回答  2019-10-27

‘或者把代码清空替换成下面的,大致意思差不多,个人觉得D1单元格值完全没有必要

Sub Search()

 On Error GoTo 100

  Dim A As Range, B As Long, C As Long, D As Long

  B = VBA.Val(.Range("D2").Value)

  C = 1: D = 1

 With Sheet2

  For Each A In Range("A1:A" & [A1048576].End(xlUp).Row)

    .Cells(C, D).Text = A.Text

    If D = B Then C = C + 1: D = 1

    D=D+1

  Next

 End With

 Exit Sub

100: MsgBox "异常错误"

End Sub

Sub Clear()

  Range("A:A").Clear

  Sheet2.UsedRange.Clear

End Sub

第2个回答  2019-10-08
下标越界这个是VBA里面的问题,主要指你输入的命令值已经超过了它的边界值即最值(最大最小)这个要根据具体情况具体解决:
举个例子:VBA中个二维数组,arr(1 to 10,1 to 10),代表他可以储存arr(x,y) (注: x取值 1到10,y取值1到10.)100个数据(或者对象);如果你让x,y取了其他值,那么系统就报错,下标越界

处理这类越界的问题有两种方法:
1、粗处理:定义一个比较大的数组,保证控件足够。弊端:占内存;
2、细处理:根据实际情况定义数组大小,用redim 及时调整数组的大小;
以上例子是针对数组的举例;其他如excel只包含三个sheet,你代码出现sheets(4)也会报错,告诉你下标越界。
第3个回答  2019-09-27
感觉你引用的表名很古怪,似乎是其他文字编码方式过来的,有些显示空白的地方未必是空格。建议用复制过来的名称,或者最好把原表名修改了,免得文字编码不一致导致错误。
另外,A列最后一个单元格不要用方括号,用range("位置")这种方式表达。
还有,如果你的原表是xls格式,是没有这么多列的。建议使用A65536 这个单元格更好一些,否则也有可能会超出范围。
总是,多想想,多试试看是哪儿的问题。
第4个回答  2019-09-26
昨天刚好研究到这里,拆分要用循环。

先取总数 a2 = Sheet2.Cells(Rows.Count, 2).End(xlUp).Row
总数除以份数然后取整。a1 = WorksheetFunction.RoundUp(a2 / 5, 0)
然后循环取出,比如第一次去1-20,第二次是21-40,第三次41-60。。。
即可追问

你好,是这个代码嘛?麻烦您看一下

追答

Dim a1 As Integer, a2 As Integer, a3 As Integer, a4 As Integer,a5 As Integer

a1=Sheet1.Cells(Rows.Count, 1).End(xlUp).Row '总数

a2=sheet1.range("D2").value '份数

a3=WorksheetFunction.RoundUp(a1 / a2, 0) '每份多少行

a4=a3

for k = 1 to a2
a5=a4-a3+1
sheet2.range(sheet2.cell(1,k),sheet2.cell(a3,k)).value =sheet1.range("A" & a5 &":A" & a4)
a4=a4+a3
next

第5个回答  2019-09-29
cel下标越界,在线等,急急急!!!Sub分拆工作表()DimshtAsWorksheetDimMyBookAsWorkbookSetMyBook=ActiveWorkbookForEachshtInMyBook.SheetsIfsht.Name<>"民族"Andsht.Name<>"学历... excel下标越界,在线等,急急急!!!
Sub 分拆工作表()
Dim sht As Worksheet
Dim MyBook As Workbook
Set MyBook = ActiveWorkbook
For Each sht In MyBook.Sheets
If sht.Name <> "民族" And sht.Name <> "学历" And sht.Name <> "工作岗位" Then
Sheets(Array(sht.Name, "民族", "学历", "工作岗位")).Copy '保留民族、学历、工作岗位三张表
ActiveWorkbook.Sheets(sht.Name).Name = "党员基本信息采集表" '更改sheet1工作表名字
ActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & sht.Name, FileFormat:=xlNormal '将工作簿另存为EXCEL默认格式
ActiveWorkbook.Close
End If
Next
相似回答