2017-07-12 64 views
0

我創建了一個函數,根據出席表中的缺席條目獲取缺席日期。如何在VBA中顯示返回的mystring值作爲日期

我的代碼是:

Dim cell As Range 
Dim myString As String 

'Loop through all the cells in the range 
For Each cell In myRange 
    'Check for value 
    If cell = "A" Then 
     myString = myString & Cells(myRow, cell.Column) & ", " 
    End If 
Next cell 

'Return string 
If Len(myString) > 0 Then 
    AbsentDays = Left(myString, Len(myString) - 2) 
End If 

End Function 

我想顯示顯示爲"dd mmm"返回值。

+0

你現在得到的'AbsentDays'的價值和格式是什麼? –

+0

這聽起來像你可能想要使用'myString = myString&Format(Cells(myRow,cell.Column),「dd mmm」)&「,」'(如果該單元格包含日期) – YowE3K

+0

我越來越像這樣: 2017年6月9日,6/9/2017,6/15/2017,6/16/2017,但我想得到像6月7日,6月9日.... –

回答

1

我假設AbsentDaysString,和你得到6/7/2017, 6/9/2017, 6/15/2017, 6/16/2017String(而不是Date)。

嘗試下面的String轉換代碼:

Dim AbsentDays As String 
Dim DatesArr As Variant 
Dim i As Long 

' for my tests 
AbsentDays = "6/7/2017, 6/9/2017, 6/15/2017, 6/16/2017" 

' use the split to get the values in an array 
DatesArr = Split(AbsentDays, ",") 
Dim myDateformat As Variant 

' loop through array 
For i = 0 To UBound(DatesArr) 
    If i = 0 Then ' first array element 
     myDateformat = Format(CDate(DatesArr(i)), "dd mmm") 
    Else ' 2nd array element and above 
     myDateformat = myDateformat & ", " & Format(CDate(DatesArr(i)), "dd mmm") 
    End If 
Next i 

MsgBox myDateformat 
+0

我想在Excel行顯示它。我是vba excel中的新成員。你能輸入完整的代碼嗎? –

+0

@YowE3K是他得到一組日期?我以爲這些都是他一個一個得到的例子 –

+1

@YowE3K在這裏你去,只爲你:) –

1

只是因爲我喜歡不斷變化降到最低,我想你可以簡單地改變你的行話說:

myString = myString & Cells(myRow, cell.Column) & ", " 

是:

myString = myString & Format(CDate(Cells(myRow, cell.Column)), "dd mmm") & ", " 
+0

LOL,別忘了刪除「extra」'「,」'在末尾 –

+0

@ShaiRado現有的代碼已經這樣做了。 ('AbsentDays = Left(myString,Len(myString) - 2)') – YowE3K

+0

我可以發送你的excel文件。你可以修改和幫助我 –

相關問題