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未定义”…我不明白,虽然因为它似乎我正在定义的一切以上; 我迷路了,希望你能帮上忙! 提前致谢!!!
三件事:
- 你需要声明
lastrow
variables。 - 用多行的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"
移至以下行。