Vba求助,懂得来帮忙,谢谢
我要把第一列(A列)作如图所示的分裂然后写了如下代码:Functionbreakdown(rngAsRange,OptionalstyleAsByte=1)AsStrin...
我要把第一列(A列)作如图所示的分裂
然后写了如下代码:
Function breakdown(rng As Range, Optional style As Byte = 1) As String '对系统导出的数据分列,有两个参数,第二参数为可选,表示取分裂后的第几列,第一参数为单元格引用
Application.Volatile '声明易失性函数
On Error Resume Next '防错
Dim i As Integer, str As String '声明两个变量
str = Split(rng.Text, ",")(WorksheetFunction.RoundUp(style / 3, 0) - 1) '将单元格的值以逗号为分隔符转换成一维数组,再从数组中取字符串赋值给变量str,取值位置取决于第二参数
If style Mod 3 = 1 Then
For i = 1 To Len(str) '遍历str的每一字符
If IsNumeric(Mid(str, i, 1)) Then Exit Function '如果遇到数字,就结束过程
breakdown = breakdown & Mid(str, i, 1) '将取出的所有字符串联起来作为函数的返回值
Next i
ElseIf style Mod 3 = 2 Then
For i = 1 To Len(str)
If VBA.IsNumeric(Mid(str, i, 1)) Or Mid(str, i, 1) = "." Then breakdown = breakdown & Mid(str, i, 1) '如果遇到数字,就结束过程或小数点就取出并串联起来作为函数的返回值
Next i
ElseIf style Mod 3 = 0 Then
For i = Len(str) To 1 Step -1 '遍历str的每一字符(从右向左)
If IsNumeric(Mid(str, i, 1)) Then Exit Function
breakdown = Mid(str, i, 1) & breakdown
Next i
End If
If Err <> 0 Then breakdown = "" '如果有错误就返回空白
End Function
在代码调试过程中在下面的这句代码出现了错误,由于本人初涉VBA,没能找到原因,希望各位有识之士能出来帮我修改一下,谢谢
str = Split(rng.Text, ",")(WorksheetFunction.RoundUp(style / 3, 0) - 1) '将单元格的值以逗号为分隔符转换成一维数组,再从数组中取字符串赋值给变量str,取值位置取决于第二参数 展开
然后写了如下代码:
Function breakdown(rng As Range, Optional style As Byte = 1) As String '对系统导出的数据分列,有两个参数,第二参数为可选,表示取分裂后的第几列,第一参数为单元格引用
Application.Volatile '声明易失性函数
On Error Resume Next '防错
Dim i As Integer, str As String '声明两个变量
str = Split(rng.Text, ",")(WorksheetFunction.RoundUp(style / 3, 0) - 1) '将单元格的值以逗号为分隔符转换成一维数组,再从数组中取字符串赋值给变量str,取值位置取决于第二参数
If style Mod 3 = 1 Then
For i = 1 To Len(str) '遍历str的每一字符
If IsNumeric(Mid(str, i, 1)) Then Exit Function '如果遇到数字,就结束过程
breakdown = breakdown & Mid(str, i, 1) '将取出的所有字符串联起来作为函数的返回值
Next i
ElseIf style Mod 3 = 2 Then
For i = 1 To Len(str)
If VBA.IsNumeric(Mid(str, i, 1)) Or Mid(str, i, 1) = "." Then breakdown = breakdown & Mid(str, i, 1) '如果遇到数字,就结束过程或小数点就取出并串联起来作为函数的返回值
Next i
ElseIf style Mod 3 = 0 Then
For i = Len(str) To 1 Step -1 '遍历str的每一字符(从右向左)
If IsNumeric(Mid(str, i, 1)) Then Exit Function
breakdown = Mid(str, i, 1) & breakdown
Next i
End If
If Err <> 0 Then breakdown = "" '如果有错误就返回空白
End Function
在代码调试过程中在下面的这句代码出现了错误,由于本人初涉VBA,没能找到原因,希望各位有识之士能出来帮我修改一下,谢谢
str = Split(rng.Text, ",")(WorksheetFunction.RoundUp(style / 3, 0) - 1) '将单元格的值以逗号为分隔符转换成一维数组,再从数组中取字符串赋值给变量str,取值位置取决于第二参数 展开
2个回答
展开全部
我认真看了你的程序,应该没错,估计是调用这个函数的上一级传递来的变量 style 数值大于原数据可分裂的列数,如分裂你图片中的第二行,如果style大于6就会出问题。如果不是这个问题,那就是逗号产生的问题,程序中是半角逗号,A1单元格中可能是中文逗号,所以数组并没有把字符串分开。你可选中A列,用查找替换方式把所有中文逗号改成西文逗号就行了。
另外问一下,你是为了学习编程还是为了完成工作,如果为了快速完成工作,不需要调用自定义函数这么复杂。要不要我帮你修改一下程序?
另外问一下,你是为了学习编程还是为了完成工作,如果为了快速完成工作,不需要调用自定义函数这么复杂。要不要我帮你修改一下程序?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询