現在、相対トグルボタンの真偽値に基づいて特定のセル値をメールで送信するVBAシートを作成しています。かなり大量のトグルボタンを使って作業していて、対応するトグルボタンの値でセル値の文字列を返す関数を追加する方法を検討していました。しかし、私の現在の文字列の戻り値は空白です。関数から変数文字列を返す方法とサブ文字列を参照する
は、私は現在、コマンドボタンを経由して呼び出された次の電子メールサブを持っている:
Public Sub Send_Email_Using_VBA()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Bcc, Email_Body, First_Name, Second_Name, Third_Name As String
Dim example As Range
Dim callOutString As String
Dim Mail_Object, Mail_Single As Variant
Email_Subject = "Check Sheet Completed"
Email_Send_From = "[email protected]"
Email_Send_To = "[email protected]"
Email_Cc = ""
Email_Bcc = ""
Email_Body = ""
On Error GoTo debugs
Set Mail_Object = CreateObject("Outlook.Application")
Set Mail_Single = Mail_Object.CreateItem(0)
With Mail_Single
.Subject = Email_Subject
.To = Email_Send_To
.CC = Email_Cc
.BCC = Email_Bcc
.Body = Email_Body & bodyString 'trying to call/add resulting string from the below sub
.Send
End With
debugs:
If Err.Description <> "" Then MsgBox Err.Description
End Sub
そして私は/呼び出し、次のサブから「bodyString」の文字列値を返そうとしています:
'Checks sheet for true toggle boxes which need immediate attention or notice and adds those descriptors to the email body.
Private Sub CommandButton5_Click()
Dim bodyString As String
Dim x As Integer
x = 1
'togglebutton2 check to see if active
If ToggleButton2 = True Then
If x = 1 Then
bodyString = "This item: " & Range("A14").Value & " is Bad"
End If
x = x + 1
End If
If x = 1 Then
MsgBox "No items need attention"
bodyString = "No items need attention"
Else
MsgBox x - 1 & " Items Need Attention:" & vbCrLf & vbCrLf & bodyString
bodyString = x - 1 & " Items Need Attention:" & vbCrLf & vbCrLf & bodyString
End If
End Sub
上記の最終的なIf/Elseステートメントでは、MsgBox関数を使用してbodyStringを表示し、正しいデータが格納されていることを確認しています。
たとえば、MsgBoxには以下の項目が表示されます。注意が必要な項目はありません。ただし、bodyString変数は空白を返します。
通常、文字列を返すFunction(つまり、Function DoThis(strInput as String)as strBodyString)がありますが、システムイベント(Clickイベント)を変更して値を返すことはできません。私はあなたが 'Send_Email_Using_VBA'と呼ぶ場所を見ておらず、どこに値を渡しているのか分かりませんが、それは大丈夫です。フォームレベルで変数を宣言することができます。したがって、そのフォームのどこでも使用できます。 –
フィードバックをいただき、ありがとうございます。私は、関数とその機能について詳しく調べる必要があります。 –