VBA通过If语句错误连接

我正在和一家电话公司合作,允许我通过电子邮件路由系统发送短信。 所以,我会通过电子邮件将消息发送到他们的服务器,它将通过短信发送到最终号码。 问题是,我需要将数百个各种格式的电话号码转换成使用to … from @ …格式的电子邮件地址(包括1 +区号)。

我写了一个很好的公式:= IF(LEN(a1)= 5,CONCATENATE(“1813”,a1,“00”,“ – 1813xxxxxxx@sms.xx.com”),IF(LEN(a1)= 6 ,CONCATENATE( “1813”,A1, “0”, “ – 1813xxxxxxx@sms.xx.com”),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 

现在我得到一个编译错误,但我已经调整了几次,有时它的拉斯特罗线“variables未定义”…我不明白,虽然因为它似乎我正在定义的一切以上; 我迷路了,希望你能帮上忙! 提前致谢!!!

三件事:

  • 你需要声明lastrowvariables。
  • 用多行的If语句,你需要在then之后有一个新行
  • phone1是一个string,所以你不能使用phone1.value ,只是使用phone1因为你已经赋值给该variables。

这样写的代码工作正常

 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 

将smsaddy设置为“”,或者在else 。 每当phone1.value不是7,smaddy目前没有初始化。

smsaddy = "1813" & phone1 & "-18136896527@xx.com"移至以下行。