2014-10-30 3 views
0

Я получаю информацию из электронной таблицы Excel и помещаю ее в отправляемое сообщение электронной почты.Форматирование определенных переменных в массиве

У меня есть таблица, которая будет отображаться в конце сообщения. Я создаю таблицу с HTML, с переменными, заполненными массивом, для более эффективного создания этих переменных.

Предполагается, что один из столбцов таблицы будет отформатирован с процентами, а другой - валютой. Как я могу форматировать только эти переменные, сохраняя при этом массив?

Sub email() 

Dim mailsubject As String  'Variable that carries the subject of the email 
Dim mailbody As String   'Variable that carries the body of the email 
Dim tabledata(2 To 7, 21 To 28) As String 
Dim i As Integer    'i and j are auxiliary variables to create the array 
Dim j As Integer 

'::::::::::::::Among these are the variables I want to format::::::::::::::: 

For i = 2 To 7 

    For j = 21 To 28 

     tabledata(i, j) = Cells(i, j).Value    

'::::::::::::::tabledata(3 to 7, 27) needs to be formatted as percentage, and tabledata(3 to 7, 28) as percentage with two decimal digits.::::::::::::::::::: 

    Next 

Next 

Dim OutlookApp As Outlook.Application 
Dim MItem As Outlook.mailitem 

Set OutlookApp = New Outlook.Application 

mailsubject = "PRODUCT IDEA" 

mailbody = "<TABLE BORDER='1' WIDTH='10%' CELLPADDING='1' CELLSPACING='1'><TR><TH COLSPAN='8'><BR><H3></H3>" _ 
       & "</TH></TR><TR><TH>" & tabledata(2, 21) & "</TH><TH>" & tabledata(2, 22) & "</TH><TH>" & tabledata(2, 23) & "</TH><TH>" & tabledata(2, 24) _ 
       & "</TH><TH>" & tabledata(2, 25) & "</TH><TH>" & tabledata(2, 26) & "</TH><TH>" & tabledata(2, 27) & "</TH><TH>" & tabledata(2, 28) & "</TH></TR>" _ 
       & "<TR><TD>" & tabledata(3, 21) & "</TD><TD>" & tabledata(3, 22) & "</TD><TD>" & tabledata(3, 23) & "</TD><TD>" & tabledata(3, 24) & "</TD>" _ 
       & "<TD>" & tabledata(3, 25) & "</TD><TD>" & tabledata(3, 26) & "</TD><TD>" & tabledata(3, 27) & "</TD><TD>" & tabledata(3, 28) & "</TD></TR>" _ 
       & "<TR><TD>" & tabledata(4, 21) & "</TD><TD>" & tabledata(4, 22) & "</TD><TD>" & tabledata(4, 23) & "</TD><TD>" & tabledata(4, 24) & "</TD>" _ 
       & "<TD>" & tabledata(4, 25) & "</TD><TD>" & tabledata(4, 26) & "</TD><TD>" & tabledata(4, 27) & "</TD><TD>" & tabledata(4, 28) & "</TD></TR>" _ 
       & "<TR><TD>" & tabledata(5, 21) & "</TD><TD>" & tabledata(5, 22) & "</TD><TD>" & tabledata(5, 23) & "</TD><TD>" & tabledata(5, 24) & "</TD>" _ 
       & "<TD>" & tabledata(5, 25) & "</TD><TD>" & tabledata(5, 26) & "</TD><TD>" & tabledata(5, 27) & "</TD><TD>" & tabledata(5, 28) & "</TD></TR>" _ 
       & "<TR><TD>" & tabledata(6, 21) & "</TD><TD>" & tabledata(6, 22) & "</TD><TD>" & tabledata(6, 23) & "</TD><TD>" & tabledata(6, 24) & "</TD>" _ 
       & "<TD>" & tabledata(6, 25) & "</TD><TD>" & tabledata(6, 26) & "</TD><TD>" & tabledata(6, 27) & "</TD><TD>" & tabledata(6, 28) & "</TD></TR>" _ 
       & "<TR><TD>" & tabledata(7, 21) & "</TD><TD>" & tabledata(7, 22) & "</TD><TD>" & tabledata(7, 23) & "</TD><TD>" & tabledata(7, 24) & "</TD>" _ 
       & "<TD>" & tabledata(7, 25) & "</TD><TD>" & tabledata(7, 26) & "</TD><TD>" & tabledata(7, 27) & "</TD><TD>" & tabledata(7, 28) & "</TD></TR>" _ 
       & "</TABLE>" 

Set MItem = OutlookApp.CreateItem(olmailitem) 
With MItem 
     .Subject = mailsubject 
     .To = "[email protected]" 
     .HTMLBody = mailbody 
     .Save 
     .Display 
End With 

End Sub 

ответ

0

Формата их, как заполнить tabledata из значений ячеек основываясь на количестве в j колонки:

For j = 21 to 28 
    tabledata(2, j) = Cells(2, j).Value 
Next 

For i = 3 to 7 
    For j = 21 to 26 
     tabledata(i, j) = Cells(i, j).Value 
    Next 
    tabledata(i, 27) = Format(Cells(i, 27).Value, "0%") 
    tabledata(i, 28) = Format(Cells(i, 28).Value, "0.00%") 
Next 
+0

В этом случае 'MyStr' бы новая строка? –

+0

Я урезал избыток кода и добавил пару комментариев, которые должны немного разъяснить вещи –

+0

Надеюсь, это имеет смысл, если вы не знаете, где этот код принадлежит вашему образцу кода, дайте мне знать. – BlueMonkMN