楼主: 鬼_异也
2280 1

[有偿编程] VBA查询字符并分列换行求解! [推广有奖]

  • 1关注
  • 0粉丝

高中生

17%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
873 点
帖子
17
精华
0
在线时间
17 小时
注册时间
2013-10-27
最后登录
2020-2-19

楼主
鬼_异也 发表于 2017-6-10 12:01:40 |AI写论文
10论坛币
想用VBA做一个小程序,按照每一个"::"前面的";"进行分列换行,但是貌似失败了。。EXCEL提示内容:下标越界。求大神解答。
由于我是真小白,代码全程都是边百度边写的,所以这个错误不知道怎么错了。。求大神解释纠正。
VBA编程错误 求改.zip (13.68 KB) 本附件包括:
  • 求改.xlsm

Sub 分开()
Dim arr, i&, cc(1 To 5000, 1 To 2), n&, o&, bb, p&, q&, m&
arr = Sheet2.[a1].CurrentRegion
For i = 4 To UBound(arr)
    Do While InStr(arr(i, 1), ";")
    m = m + 1
    q = Len(arr(i, 1))
    o = InStr(1, arr(i, 1), "::")
    If o > 0 Then
    o = InStr(o + Len("::"), arr(i, 1), "::")
    End If
    bb = Left(arr(i, 1), o)
    p = InStrRev(bb, ";")
    cc(m, 2) = Left(arr(i, 1), p)
    cc(m, 1) = arr(i, 2)
    arr(i, 1) = Right(arr(i, 1), q - p)
    Loop
Next
[a10:b20].ClearContents
[a10].Resize(m, 2) = cc
Range("A1").Select
End Sub

关键词:VBA contents CURRENT Content Select 百度 EXCEL 程序

沙发
塔奇克马 发表于 2017-6-13 09:43:05
  1. Do While InStr(arr(i, 1), "::")
  2.             q = Len(arr(i, 1))
  3.             o = InStr(1, arr(i, 1), "::")
  4.             If o > 0 Then
  5.                 o = InStr(o + Len("::"), arr(i, 1), "::")
  6.                 If o > 0 Then
  7.                     m = m + 1
  8.                     bb = Left(arr(i, 1), o)
  9.                     p = InStrRev(bb, ";")
  10.                     cc(m, 2) = Left(arr(i, 1), p)
  11.                     cc(m, 1) = arr(i, 2)
  12.                     arr(i, 1) = Right(arr(i, 1), q - p)
  13.                 Else
  14.                     m = m + 1
  15.                     cc(m, 1) = arr(i, 2)
  16.                     cc(m, 2) = arr(i, 1)
  17.                     Exit Do
  18.                 End If
  19.             End If
  20.         Loop
复制代码
把do...loop里改成上面的,其他不变。
请测试

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 01:09