2016-11-28 11 views
0

"3/1"のような文字列から番号を取得する必要があるコードを記述しました。私は2つの異なる変数に整数としてこれらの2つの数値を格納する必要があります。私はその値を取得するために数を分割し、この機能を呼び出す機能を持っているこの関数は、クラスで私のスプリット機能(BigOne)メインクラスで分割機能のVBAタイプの不一致

Public Function SplitValues(pInput As String, pdelim As String) As String() 
'Declaration of variables 
Dim strSplit() As String 
Dim countDelim As Integer 

'Initialization of variables 

countDelim = countCharacter(pInput, pdelim) 
If countDelim > 0 Then 
    ReDim strSplit(countDelim) 
    strSplit = Split(pInput, pdelim) 
    SplitValues = strSplit 
End If 
End Function 

です :私は2クラスでこのコードを書かれていますが欲しいです。しかし、私は "タイプの不一致のエラー"私はこのタイプの不一致の理由を検出することはできませんを取得しています。

Public Function get_MaxChars(pInput As String) As Integer 
'declaration of variables 
    Dim gen As cBigOne 
    Dim values As String 

    'Main code 
    pInput = CStr(pInput) 
    Debug.Print (pInput) 
    values = gen.SplitValues(pInput, "/") 
    get_MaxChars = CInt(values(0)) 

End Function 

なぜ、正しく動作しないのかわかりません。タイプミスマッチエラーが発生します。なぜなら、どこでも私は同じタイプを渡していると私は信じているからです。

+0

エラーでpInput何にOutlookで到着したすべてのメールの添付ファイルを保存する場所をVARIANT

これは私のコードである、として、配列を宣言する必要があることがわかりましたか? –

+0

pInputがエラー "1/3"または同様の文字列です。 – TMikonos

答えて

1

SplitValuesは文字列配列を返し、文字列に割り当てようとしています。代わりにvaluesString()として調光してみてください。

SplitValuesは、クラスのインスタンスを作成していないので、まだgenが1になると言っても、問題は残ります。 Dim gen As cBigOneの後、Set gen As New cBigOne

1

私は同じ問題がありました。その後、私はあなたが私が指定したフォルダ

 Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) 
      Dim objOL As Outlook.Application 

      Dim arr As Variant 
      Dim i As Integer 
      Dim ns As Outlook.NameSpace 
      Dim itm As MailItem 
      Dim m As Outlook.MailItem 
      Dim j As Long 
     Dim lngCount As Long 
     Dim strFile As String 
     Dim strFolderpath As String 
     Dim strDeletedFiles As String 
     Dim fs As FileSystemObject 
     Dim mldat As Date 
     Dim strsndr As String 

      'On Error Resume Next 
      Set ns = Application.Session 
      arr = Split(EntryIDCollection, ",") 



     '******************************************************************************************* 

     ' Set the Attachment folder. 
     strFolderpath = "z:\dropbox (AAA-DZ)\25_Attach\" 

     ' Check each selected item for attachments. If attachments exist, 
     ' save them to the strFolderPath folder and strip them from the item. 
     For ij = 0 To UBound(arr) 
     Set itm = ns.GetItemFromID(arr(ij)) 
       If itm.Class = olMail Then 
           With itm 

           ' This code only strips attachments from mail items. 
           ' If objMsg.class=olMail Then 
           ' Get the Attachments collection of the item. 
           Set objAttachments = .Attachments 
           lngCount = objAttachments.Count 
           strDeletedFiles = "" 

           If lngCount > 0 Then 

           ' We need to use a count down loop for removing items 
           ' from a collection. Otherwise, the loop counter gets 
           ' confused and only every other item is removed. 
           Set fs = New FileSystemObject 

           For i = lngCount To 1 Step -1 

            ' Save attachment before deleting from item. 
            ' Get the file name. 


            strFile = Right("0000" + Trim(Str$(Year(.SentOn))), 4) + "_" + Right("00" + Trim(Str$(Month(.SentOn))), 2) + "_" + Right("00" + Trim(Str$(Day(.SentOn))), 2) + "_" + Right("00" + Trim(Str$(Hour(.SentOn))), 2) + "_" + Right("00" + Trim(Str$(Minute(.SentOn))), 2) + "_" + Right("00" + Trim(Str$(Second(.SentOn))), 2) + "_" + .SenderEmailAddress + "_" + .Parent + "_" + objAttachments.Item(i).FileName 

            ' Combine with the path to the Temp folder. 
            strFile = strFolderpath & strFile 

            ' Save the attachment as a file. 
              If Left(objAttachments.Item(i).FileName, 5) <> "image" Then 
              objAttachments.Item(i).SaveAsFile strFile 

              ' Delete the attachment. 
              objAttachments.Item(i).Delete 

              'write the save as path to a string to add to the message 
              'check for html and use html tags in link 
              If .BodyFormat <> olFormatHTML Then 
               strDeletedFiles = strDeletedFiles & vbCrLf & "<file://" & strFile & ">" 
               Else 
               strDeletedFiles = strDeletedFiles & "<br>" & "<a href='file://" & _ 
               strFile & "'>" & strFile & "</a>" 
              End If 
             Else 
             objAttachments.Item(i).Delete 

             End If 


           Next i 

             ' Adds the filename string to the message body and save it 
             ' Check for HTML body 
             If Len(strDeletedFiles) > 5 Then 
               If .BodyFormat <> olFormatHTML Then 
                .Body = vbCrLf & "The file(s) were saved to " & strDeletedFiles & vbCrLf & .Body 
               Else 
                .HTMLBody = "<p>" & "The file(s) were saved to " & strDeletedFiles & "</p>" & .HTMLBody 
               End If 

              .Save 
             End If 
            Else 
            objAttachments.Item(1).Delete 

            End If 


         End With 

       End If 
     Next ij 

    ExitSub: 

     Set objAttachments = Nothing 
     Set objSelection.Item(ij) = Nothing 
     Set objSelection = Nothing 
     Set objOL = Nothing 


     '******************************************************************************************** 


      Set ns = Nothing 
      Set itm = Nothing 
      Set m = Nothing 
     End Sub