有些古怪我在這裏不理解。這裏的小例程啓動一個電子郵件組成窗口。 Target.Row在單擊時返回正確的行,並在作爲單獨變量完成時正確連接(請參閱中部的章節)。當我在'With MItem'塊中直接使用它時,它會從電子表格的下一行中取出值,而不是由Target.Row值指示的行。例如:第3行被點擊,並加載第4行的值。當我使用預串聯變量時,它會拉出正確的單元格值。有任何想法嗎??預先感謝您的幫助。Target.Row無法在VBA中正常工作
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' checking to see if update number cell is picked
If Not Intersect(Target, Range("B3:B50")) Is Nothing Then
' testing for blank subject box
If (Worksheets("Email").Range("C" & Target.Row).Value <> "") Then
' initialize variables
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim sBlock As String
' ????
Dim nTest As Integer
Dim sRange As String
nTest = Target.Row
sRange = "C" & Target.Row
' creating html signature block
sBlock = "<br><br><font size=4>Name Here</font><br>"
sBlock = sBlock & "<font size=2><b>Title</b><br>"
sBlock = sBlock & "<b>phone 1</b><br>"
sBlock = sBlock & "<b>phone 2</b></font><br>"
'Create Outlook object
Set OutlookApp = New Outlook.Application
'Create Mail Item and view before sending
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.To = Worksheets("Emails").Range("D" & Target.Row).Value
.Subject = Worksheets("Emails").Range("C" & Target.Row).Value
.HTMLBody = Worksheets("Emails").Range("E" & Target.Row).Value & sBlock
.Display
End With
End If
End If
End Sub
如果它是一致的,如果您沒有聽到有關爲什麼更好的答案,可以使用(「D」和Target.Row -1)。 ...另外,我不認爲你有一個名爲電子郵件和另一個命名的電子郵件的工作表,他們是不同的一行被抵消?您的第5行引用了「電子郵件」,並且您的屏蔽使用了「電子郵件」 – Rodger
僅供參考,您應該添加代碼以確認「目標」僅爲單個單元格,否則如果要選擇多個單元格,則可能會引發錯誤 – RGA
另一個FYI - 如果用戶已經設置了默認簽名,您可以在[這個問題]中使用接受的答案(http://stackoverflow.com/questions/8994116/how-to-add-default-signature-in-outlook )這可能會幫助你。 –