Arrays 如果数组为空,则VBA继续
Arrays 如果数组为空,则VBA继续,arrays,vba,loops,Arrays,Vba,Loops,我对VBA非常陌生。我目前正在创建一个脚本,希望它能节省我很多时间 我只是想知道,如果数组未满,如何跳过错误?例如,1循环检查数组是否有名字和姓氏,如果没有姓氏,我希望脚本继续。 FullName = ActiveSheet.Cells(37, ii).Value Name = Split(FullName, " ") For intCount = LBound(Name) To UBound(Name) sData.Range("C" & iii).Value = Name(0
我对VBA非常陌生。我目前正在创建一个脚本,希望它能节省我很多时间
我只是想知道,如果数组未满,如何跳过错误?例如,1循环检查数组是否有名字和姓氏,如果没有姓氏,我希望脚本继续。
FullName = ActiveSheet.Cells(37, ii).Value
Name = Split(FullName, " ")
For intCount = LBound(Name) To UBound(Name)
sData.Range("C" & iii).Value = Name(0)
sData.Range("D" & iii).Value = Name(1)
Next
如果Name(1)
为空,那么代码如何继续 带有一些测试值
Option Explicit
Sub test()
Dim ii As Long
Dim iii As Long
ii = 2
iii = 3
Dim FullName As String
Dim Name() As String
With ActiveSheet
FullName = .Cells(37, ii).Value
If InStrRev(FullName, " ", -1) > 0 Then 'space present
Name = Split(FullName, " ")
If UBound(Name) > 1 Then Exit Sub 'there was more than one space present. Handling this was not specified so exit sub.
.Range("C" & iii).Value = Name(0)
.Range("D" & iii).Value = Name(1)
Else
.Range("C" & iii).Value = FullName
.Range("D" & iii).Value = vbNullString
End If
End With
End Sub
如果要避免在错误恢复下一步时使用
,可以尝试以下操作:
FullName = ActiveSheet.Cells(37, ii).Value
Name = Split(FullName, " ")
If Len(Join(Name)) > 0 Then
sData.Range("C" & iii).Value = Name(0)
sData.Range("D" & iii).Value = Name(1)
End If
原来是贴出来的Join
基本上恢复为全名值,但没有空格。或者,如果InStr(1,FullName,“,vbBinaryCompare)>0,则可以使用,然后使用,因为这两列是连续的,所以可以将数组粘贴到位,使用Range.Resize
可根据需要跨多个列转储数组-唯一需要注意的是Name
是否可以包含多个空格:
FullName = ActiveSheet.Cells(37, ii).Value
Name = Split(FullName, " ")
If UBound(Name) <= 1 Then
sData.Range("C" & iii).Resize(, UBound(Name) + 1).Value = Name
Else
'there was more than one space...
End If
FullName=ActiveSheet.Cells(37,ii).Value
名称=拆分(全名为“”)
如果UBound(Name)FYI显示intCount
循环是完全冗余的;第二次迭代将覆盖第一次迭代所做的一切。