ここでは奇妙なことが分かりません。電子メールのコンポジションウィンドウを起動する小さなルーチン。 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
あなたは 'Target'が単一のセルだけであることを確認するコードを追加する必要があります。 – RGA
もう1つのFYI - ユーザーに既定の署名が既に設定されている場合、[この質問]で承認された回答を使用することができます(http://stackoverflow.com/questions/8994116/how-to-add-default-signature-in-outlook )あなたを助けるかもしれない。 –