2016-02-26 46 views
-1

我有一个连接不同列中的字​​符串的公式。当每个列中都有数据时它工作得很好,但是如果一列是空白的,那么对于由空列形成的字符串,会出现“无效过程调用或参数”错误。有没有一个条款,我可以添加到我的代码忽略字符串,如果它是空的?如果在连接公式中为空,则忽略字符串

Sub Concatenation_for_the_nation() 

'Range("H2").End(xlDown).Select 
Cells(rows.Count, "H").End(xlUp).Select 
For i = 1 To ActiveCell.Row 
    Range("H" & i).Select 
    StrStrONE = StrStrONE & "" & Selection 
Next i 
Cells(1, 1).Select 

'Range("I2").End(xlDown).Select 
Cells(rows.Count, "I").End(xlUp).Select 
For j = 1 To ActiveCell.Row 
    Range("I" & j).Select 
    StrStrTWO = StrStrTWO & "" & Selection 
Next j 
Cells(1, 1).Select 

'Range("J2").End(xlDown).Select 
Cells(rows.Count, "J").End(xlUp).Select 
For k = 1 To ActiveCell.Row 
    Range("J" & k).Select 
    StrStrTHREE = StrStrTHREE & "" & Selection 
Next k 
Cells(1, 1).Select 

'Range("K2").End(xlDown).Select 
Cells(rows.Count, "K").End(xlUp).Select 
For l = 1 To ActiveCell.Row 
    Range("K" & l).Select 
    StrStrFOUR = StrStrFOUR & "" & Selection 
Next l 
Cells(1, 1).Select 

StrStrONE = Trim(StrStrONE) 
StrStrTWO = Trim(StrStrTWO) 
StrStrTHREE = Trim(StrStrTHREE) 
StrStrTHREE = Left(StrStrTHREE, Len(StrStrTHREE) - 3) 
StrStrFOUR = Trim(StrStrFOUR) 
StrStrFOUR = Left(StrStrFOUR, Len(StrStrFOUR) - 3) 

Cells(14, 7) = "(ISAV(" & StrStrONE & " " & StrStrTWO & " " & StrStrTHREE & ")=1 OR (" & StrStrFOUR & ")=1)=1" 


Cells(14, 7).Select 



End Sub 

回答

0

您可以检查列不为空,通过使用ISBLANK()功能

0

正如user2471313说使用ISBLANK()函数或我想补充的是这样的检查字符串:

If StrStrONE<>"" and StrStrTWO<>"" and StrStrTHREE<>"" and StrStrFOUR<>"" then 
    StrStrONE = Trim(StrStrONE) 
''''your code until end 
End if 
+0

这似乎是一个正确的想法,但我不认为有必要让所有**字符串同时为非空,最好依次测试每个字符串并依次测试每个“Trim” 。 – asongtoruin

+0

@ason​​gtoruin只是为了分享,有时修剪功能也不是真正符合我的经验。在这种情况下,我需要找到具体的字符,然后用“”替换它们。 – user2851376

相关问题