我怎样才能保持Excelmacros中的单元格的原始格式?

我是Excel VBA中的新成员,我设法创build了一个简单的macros来自动化一些电子邮件,这些电子邮件为我的工作人员提供了定制的报告。 在这种情况下,我使用一个工作表,根据添加到文件中的信息而变化。 macros使用这些信息,并创build一个定制的电子邮件。 其中一些信息是时间和百分比值,在工作表中,单元格保持这种格式。 例如,如果这个人已经在特定的任务中工作了3个小时,它将显示该单元格为“3:00”。 但是,当创buildvariables并使用它们来创build电子邮件时,这些值将显示在数字对应中。

示例电子邮件

这是0.666666666666667报告! 这个自动电子邮件的想法是帮助您实现您的日常目标期望。 如果您认为可以做得更好,请随时与我们联系!

目前您正在:•评分时间的00:00•质量时间的00:00•不等级时间的2.​​79282407407407E-02从现在开始,它是0.666666666666667,您应该有0.3125,所以您错过了0.284571759259259。 此外,您的每日完成目标是0.133333333333333。 PD:你有00:00,所以你是完美的!

我想以我需要的特定格式显示这个值,这也是单元格的原始格式。 我留给你的代码,如果有新手的错误对不起,我是新来的。 提前致谢。

Sub SendEmail(what_address As String, subject_line As String, email_body As String) Dim olApp As Outlook.Application Set olApp = CreateObject("Outlook.Application") Dim olMail As Outlook.MailItem Set olMail = olApp.CreateItem(olMailItem) olMail.To = what_address olMail.Subject = subject_line olMail.BodyFormat = olFormatHTML olMail.HTMLBody = email_body olMail.Send End Sub Sub SendMassEmail() row_number = 1 Do DoEvents 'Adding 1 to the counter row_number = row_number + 1 'Creating the variables Dim mail_body_message As String Dim full_name As String Dim rating As String Dim quality_review As String Dim not_rating_time As String Dim inactive As String Dim absolute_target As String Dim missing As String Dim inactive_comment As String Dim expected_time As String Dim hour As String Dim recipient As String 'Define the non-moving elements mail_body_message = Sheet10.Range("J2") hour = Sheet10.Range("J8") expected_time = Sheet10.Range("J11") recipient = Sheet10.Range("B" & row_number) & "@accenture.com" 'Define the moving elements full_name = Sheet10.Range("A" & row_number) rating = Sheet10.Range("C" & row_number) quality_review = Sheet10.Range("D" & row_number) not_rating_time = Sheet10.Range("E" & row_number) inactive = Sheet10.Range("F" & row_number) absolute_target = Sheet10.Range("G" & row_number) missing = Sheet10.Range("H" & row_number) inactive_comment = Sheet10.Range("I" & row_number) 'Replacing elements in the email body mail_body_message = Replace(mail_body_message, "replace_name", full_name) mail_body_message = Replace(mail_body_message, "replace_hour", hour) mail_body_message = Replace(mail_body_message, "replace_rating", rating) mail_body_message = Replace(mail_body_message, "replace_quality", quality_review) mail_body_message = Replace(mail_body_message, "replace_nrt", not_rating_time) mail_body_message = Replace(mail_body_message, "replace_expected", expected_time) mail_body_message = Replace(mail_body_message, "replace_missing", missing) mail_body_message = Replace(mail_body_message, "replace_target", absolute_target) mail_body_message = Replace(mail_body_message, "replace_inactive", inactive) mail_body_message = Replace(mail_body_message, "replace_inacomment", inactive_comment) Call SendEmail(recipient, "DO NOT RESPOND - TEST EMAIL", mail_body_message) Loop Until row_number = Sheet10.Range("J5") MsgBox "The e-mails have been sent!" End Sub 

您默认的单元格.Value属性。 指定.Text属性来检索您在单元格中看到的内容。

 full_name = Sheet10.Range("A" & row_number).Text rating = Sheet10.Range("C" & row_number).Text quality_review = Sheet10.Range("D" & row_number).Text not_rating_time = Sheet10.Range("E" & row_number).Text inactive = Sheet10.Range("F" & row_number).Text absolute_target = Sheet10.Range("G" & row_number).Text missing = Sheet10.Range("H" & row_number).Text inactive_comment = Sheet10.Range("I" & row_number).Text 

你也可以把所有的variables声明为string。