2016-10-13 2 views
1

従業員は、毎年2回の認証が必要です。従業員名の認証日と今後の認証日は、マスタースプレッドシートに保存されます。このスプレッドシートから、ユーザーフォームを開いて認証日のOutlook予定を送信できます。ユーザーフォームでは、証明書を送信する従業員を選択します。私の質問はこれです:予定の日付はあなたが選んだ従業員によって異なりますか?どのコードを使用すれば、列Bの正しい従業員名をマトリックスで検索し、対応する行の列Hの日付を使用しますか?私はプロセスでここまで現在午前:従属セルデータを使用したExcel UserFormからの電子メールの送信

Dim Otlk 'As Outlook.Application 
Dim Appt 'As Outlook.AppointmentItem 
Const olAppointmentItem = 1 
Const olMeeting = 1 
    Set Otlk = CreateObject("Outlook.Application") 
    Set Appt = Otlk.CreateItem(olAppointmentItem) 

'30 Day Invite 
With Appt 
    .Subject = Me.Employee1ComboBox.Value & " " & "Cft Certification" 
    .Start = 

enter image description here

+0

コンボボックスから従業員の名前を取得し、対応する行を見つけてgeその行のColHからの日付。異なる列のファーストネームとラストネームがあるが、コンボボックスにフルネームがあるため、Find()を使用するよりも少し複雑です...コンボボックスはどのように設定されていますか? –

+0

私は同意します。このフォームにはたくさんのことがあります。マスタースプレッドシートに新しいエントリが作成されると、その名前を非表示のワークシート上の単一のセルに連結するコードがあります。この名前付き範囲は、コンボボックスを埋めるものです。 (従業員がスプレッドシートに追加されると、コンボボックスは自動的に更新されます)。隠しシートには、マスターワークシートの行参照を示す連結名の隣に列があります。私は自分の日付のセル参照でその数値を取得する方法はわかりません。 – Jguth617

+0

[隠し]列を、たとえば列Bの後ろに挿入し、そこに名前を連結し、ComboBoxからFullNameを選択した後にWorksheet.Function.VlookupまたはIndex&Matchの組み合わせを使用できますか? –

答えて

0

ような何か:(あなたが修正する必要があります。レイアウトに関するいくつかの推測を作る)日付を取得するために

'30 Day Invite 
With Appt 
    .Subject = Me.Employee1ComboBox.Value & " " & "Cft Certification" 
    .Start = GetDate(Me.Employee1ComboBox.Value) 

機能

Function GetDate(eName) 
    Dim f As Range, rwNum 
    Set f = ThisWorkbook.Sheets("hidden").Range("namehere").find(_ 
         What:=eName, lookat:=xlWhole) 
    If Not f is Nothing then 
     GetDate = thisworkbook.sheets("master").cells(f.Row,"H").value 
    Else 
     'should never happen 
    End if 
End Function 
+0

それは完璧だった、ありがとう。 .Sendステップに到達したときにエラーメッセージが見つからないオブジェクトを取得し続けます。私はなぜこのコードが、開始日のソースだったのか、最後に変更を加えた唯一のものとしてこのコードがなぜ使用されたのかわかりません。そして私がエラーメッセージを受け取っている間、私がカレンダーをチェックすると、予定がそこにあります。 – Jguth617

関連する問題