2016-01-13 96 views
0

我正在與一家電話公司合作,允許我通過電子郵件路由系統發送SMS消息。所以,我會通過電子郵件將消息發送到他們的服務器,並將通過短信發送到最終號碼。問題是,我需要將數百個各種格式的電話號碼轉換爲使用to ... from @ ...格式的電子郵件地址(包括1 +區號)。我寫了一個很好的公式:= IF(LEN(a1)= 5,CONCATENATE(「1813」,a1,「00」,「 - [email protected]」),IF(LEN( A1)= 6,CONCATENATE( 「1813」,A1, 「0」, 「 - [email protected]」),IF(LEN(A1)= 10,CONCATENATE( 「1」,A 1「, - 1813xxxxxxx @ (IF(LEN(a1)= 7,CONCATENATE(「1813」,a1,「 - [email protected]」),a1)))))通過If聲明錯誤VBA連接

它增加所需的文本,但我想把它變成一個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 & "[email protected]" 

Cells(x, 5).Value = smsaddy 

End If 
Next 

End Sub 

現在,我得到一個編譯錯誤,但我已經調整了幾次,有時它在拉斯特羅線上是一個「變量未定義」......我不明白它,因爲它似乎是我定義了上面的所有東西;我迷路了,希望你能幫助!提前致謝!!!

回答

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 & "[email protected]" 

    Cells(x, 5).Value = smsaddy 

End If 
Next 

End Sub 
+0

謝謝正常工作!我不得不添加一個If Len(phone1)= 7然後,但是這個伎倆!非常感謝! – user3381297

0

將smsaddy設置爲「」開頭或else。每當phone1.value不是7時,smaddy當前未被初始化。

smsaddy = "1813" & phone1 & "[email protected]"移至下一行。