VBA通过If语句错误连接

时间:2016-01-13 00:26:42

标签: excel vba excel-vba concatenation

我正在与允许我通过电子邮件路由系统发送短信的电话公司合作。因此,我将邮件通过电子邮件发送到他们的服务器,它将通过短信发送到结束号码。问题是,我需要使用to-from @ ...格式(包括1 +区域代码)将数百种不同格式的电话号码转换为电子邮件地址。

我写了一个效果很好的公式:= IF(LEN(a1)= 5,CONCATENATE(" 1813",a1," 00"," -1813xxxxxxx @ sms.xx.com&#34),IF(LEN(A1)= 6,CONCATENATE(" 1813"中,a1," 0"" -1813xxxxxxx @短信。 xx.com&#34),IF(LEN(A1)= 10,CONCATENATE(" 1"中,a1," -1813xxxxxxx@sms.xx.com"),(IF( LEN(A1)= 7,CONCATENATE(" 1813"中,a1," -1813xxxxxxx@sms.xx.com"),A1)))))

它添加了所需的文本,但我想将其变成VBA。

我是VBA的新手(请原谅我,如果这是一个新手的错误),但这是我到目前为止所做的:

Option Explicit

Sub SMSemail()

Dim phone1 As String
Dim smsaddy As String

Dim x As Long
lastrow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For x = 1 To lastrow

phone1 = Cells(x, 4).Value

If phone1.Value = 7 Then smsaddy = "1813" & phone1 & "-18136896527@xx.com"

Cells(x, 5).Value = smsaddy

End If
Next

End Sub

现在我收到编译错误,但我已经调整了几次,有时它的变量未定义"在拉斯特罗线上...我不明白它,因为我似乎在定义上面的一切;我迷路了,希望你能帮忙!在此先感谢!!!

2 个答案:

答案 0 :(得分:1)

三件事:

  • 您需要声明lastrow变量。
  • 使用多行If语句,您需要在then
  • 之后添加一个新行
  • phone1是一个字符串,因此您无法使用phone1.value,只需使用phone1,因为您已经为该变量指定了值。

这样写的代码工作正常

Option Explicit
Sub SMSemail()

Dim phone1 As String
Dim smsaddy As String
Dim lastrow As Long

Dim x As Long
lastrow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For x = 1 To lastrow

phone1 = Cells(x, 4).Value

If phone1 = 7 Then

    smsaddy = "1813" & phone1 & "-18136896527@xx.com"

    Cells(x, 5).Value = smsaddy

End If
Next

End Sub

答案 1 :(得分:0)

将smsaddy设置为""在开头,或@echo off for /f "skip=1 delims==" %%a in ( 'wmic computersystem get model' ) do ( for /f "tokens=* delims=" %%# in ("%%a") do set PROD=%%a ) REM echo %PROD% SET /p MODELT=%PROD% if %MODELT%=="Latitude E6520" ( echo "This is code-block for computer driver copy code stuff" ) else echo "Nothing to see here!" 。每当phone1.value不是7时,smaddy当前没有初始化。

else移至以下行。