2016-10-13 54 views
1

我們的員工需要兩年一次的認證。員工姓名認證日期和即將到來的認證日期保存在主電子表格中。在此電子表格中,您可以打開一個用戶表單以發送認證日期的Outlook約會。在UserForm中,您選擇您想要發送認證的員工。我的問題是:約會的日期取決於您選擇哪個員工?我使用哪些代碼,將在列B中搜索矩陣以找到正確的員工姓名,並在相應行的H列中使用日期?我目前這個很遠的過程:使用從屬單元數據從Excel用戶窗口發送電子郵件

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 t來自ColH在該行的日期。這比使用Find()更復雜一點,因爲你的名字和姓氏在不同的列中,但你的組合框有全名......組合框是如何填充的? –

+0

我同意。這種形式有很多。在主電子表格中創建新條目時,會有代碼將名稱連接到隱藏工作表上的單個單元格中。這個命名的範圍是填充組合框的內容。 (就像員工添加電子表格一樣,組合框會自動更新。)在隱藏工作表上,有一個與concat名稱相鄰的列,它給了我主工作表中的行引用。我只是不確定如何在我的日期單元格引用中獲取數字。 – Jguth617

+0

你可以在列B後面插入一個[hidden]列,在那裏連接名字,並且在從ComboBox中選擇FullName後使用Worksheet.Function.Vlookup或者索引和匹配的組合? –

回答

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

這很完美,謝謝。當它到達。發送步驟時,我只是不斷收到對象未找到的錯誤消息。我不確定這是爲什麼,因爲自上次成功使用此代碼以來唯一發生變化的是開始日期的來源。當我收到錯誤信息時,當我檢查我的日曆時,約會就在那裏。 – Jguth617

相關問題