代码给出错误下标超出范围

时间:2015-05-18 14:01:40

标签: excel excel-vba vba

下面的代码给出了我的下标超出范围的错误。在这一行给我错误:

[ oSheet.Cells(i,5).Value = g(h) ]  

我使用上面的代码使用split函数分隔字符串。我在一个单元格中的excel中有以下数据:

Pankaj sharma;#234; #khushal verma;#786; #parul datta;#456;#

我想使用VBA将其转换为此:

pankaj sharma

khushal verma

Dim c

Dim d

Dim h


Set objExcel = CreateObject("Excel.Application")

Set objWorkbook = objExcel.Workbooks.Open("D:\test4.xlsm")

objExcel.Visible = True

objExcel.displayalerts = false

Set objExcel2 = CreateObject("Excel.Application")

strPathExcel = "C:\Users\ssontakke\Desktop\test6.xlsx"

objExcel2.Workbooks.open strPathExcel 

Set oSheet = objExcel2.ActiveWorkbook.Worksheets(1)

a = 2

i = 2

j = 2


Do Until objExcel.Cells(a, 1).Value = ""

c = 0
d = 0
h = 0
inputText=objExcel.Cells(j, 5).Value
Do Until c = objExcel.Cells(j, 4).Value
g = split(inputText,";#")

oSheet.Cells(i,3).Value = g(h)

c = c + 1
i = i + 1
d = d + 1
h = h + 2

Loop

i = i + 1

a = a + 1

j = j + 1

Loop

objExcel.Save

objExcel2.Save

objExcel.Quit

objExcel2.Quit

1 个答案:

答案 0 :(得分:0)

g没有h个元素(或者,正确地,h-1个数字元素)。 h是数组的无效索引。

这可能是因为正在拆分的字符串(inputText)不包含预期的分隔符数;#,或者字符串可能是空的。

例如,分割后的字符串“0#; 1#; 2”将是:

索引0处的“零”

指数1的“一”

指数2的“两个”

如果您尝试获取g(3),则不存在此类元素 - “下标超出范围。”