在VBA中编写公式会导致types不匹配13

重叠的问题:是否可以在VBA中编写公式,将这些值保存为variables,而不将它们放在工作表的单元格中?

我得到“My_Date = Left(Replace”)行的错误…我认为这也将是一个问题的“My_Take =右(replace”行。

该函数应该从string中取出数字:

Public Function SplitText(pWorkStr As String, pIsNumber As Boolean) As String Dim xLen As Long Dim xStr As String xLen = VBA.Len(pWorkStr) For i = 1 To xLen xStr = VBA.Mid(pWorkStr, i, 1) If ((VBA.IsNumeric(xStr) And pIsNumber) Or (Not (VBA.IsNumeric(xStr)) And Not (pIsNumber))) Then SplitText = SplitText + xStr End If Next End Function 

这将数字格式化为一个date,并且不带任何字母:

 Sub Fill_Date_and_Take() Dim NAMEoFILE As String Dim My_Date As String Dim My_Take As String NAMEoFILE = "I love dogs 09-20-17 Take Number 2.xlsx" My_Date = Left(Replace(Replace(Replace(SplitText(NAMEoFILE, True), 2, 0, "-"), 5, 0, "-"), 8, 0, "_"), 7) MsgBox (My_Date) My_Take = Right(Replace(Replace(Replace(SplitText(NAMEoFILE, True), 2, 0, "-"), 5, 0, "-"), 8, 0, "_"), 1) MsgBox (My_Take) End Sub 

我有点新来堆栈溢出,所以我不知道如何设置GSerg的评论的答案,但我所要做的是将每个“replace”为“WorksheetFunction.Replace”!

 My_Date = Left(WorksheetFunction.Replace(WorksheetFunction.Replace(WorksheetFunction.Replace(SplitText(NAMEoFILE, True), 2, 0, "-"), 5, 0, "-"), 8, 0, "_"), 7) My_Take = Right(WorksheetFunction.Replace(WorksheetFunction.Replace(WorksheetFunction.Replace(SplitText(NAMEoFILE, True), 2, 0, "-"), 5, 0, "-"), 8, 0, "_"), 1) 

谢谢GSerg!