我正在与允许我通过电子邮件路由系统发送短信的电话公司合作。因此,我将邮件通过电子邮件发送到他们的服务器,它将通过短信发送到结束号码。问题是,我需要使用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
现在我收到编译错误,但我已经调整了几次,有时它的变量未定义"在拉斯特罗线上...我不明白它,因为我似乎在定义上面的一切;我迷路了,希望你能帮忙!在此先感谢!!!
答案 0 :(得分:1)
三件事:
lastrow
变量。 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
移至以下行。