2015-05-18 44 views
0

下面的代码是给我下标错误出range.it的是给我的错误在这行:代码给错误下标越界

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

我使用上面的代码单独使用字符串分割功能。我有在Excel中的以下数据在一个小区:

潘卡·夏尔马;#234; #khushal维尔马;#786; #parul达塔;#456;#

我想用将其转换为这VBA:

的Pankaj夏尔马

khushal迫近

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 

回答

0

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

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

例如,字符串 “零#;一个#;两个” 后分裂为:

“零” 在索引0处

“一” 在索引1

“二” 在索引2

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

+0

但它给了我一些行的结果,然后它显示下标超出范围的错误,如何解决这个错误任何方式来解决这个错误 – swapnil

+0

调试代码。代码错误时'inputText'的值和'h'的值是什么? – LimaNightHawk

+0

实际上输入文本值necomes 13和h值变为14 – swapnil