我不太懂vb,请教各位如下问题
在注释:“如果正确”后面部分代码每次都不执行,
shell中的部分也没有执行
请各位帮我看看这段程序还有什么问题
程序思路:判断在某个特定目录下是否有指定文件,如果没有则生成一个报警文件,有则生成状态文件,然后ping 一个地址,如果通则把alert和state文件ftp到这个机器上。Private Sub Timer_Seek_Timer()
 
 Static Seek_StarTime As Date
 
 
 If Seek_Start_Flag = False Then
      Seek_StarTime = DateAdd("N", word_list.Item(13), Time)
      Seek_Start_Flag = True
 End If
  
If Seek_Start_Flag = True Then
  
     If Time >= Seek_StarTime Then
  
     
   Dim FileNumber  As Integer
   Dim file_line As String
   Dim result_file As String
   Dim i As Integer
   Dim GST_date As Date
   Dim Val_GST_day As Integer
   Dim Val_GST_hour As Integer
   Dim Str_GST_day As String
   Dim Str_GST_hour As String
   Dim Str_day As String
   Dim Str_hour As String
   Dim Str_minute As String
   
   
   Dim FileName As String
   Dim Find_Result As Boolean
   Dim Find_File As String
   Dim str_ftp As String
   
   
   
   
   Find_Result = False
   Find_File = ""
   
  
   
   
   ChDrive ("C:")
   ChDir (word_list.Item(4))
  
    GST_date = DateAdd("H", -8, Date & Space(1) & Time)
    Val_GST_day = Day(GST_date)
    Val_GST_hour = Hour(GST_date)
        
    If Val_GST_day < 10 Then
           Str_GST_day = "0" & Trim(Str(Val_GST_day))
    Else
           Str_GST_day = Trim(Str(Val_GST_day))
           
    End If
        
    If Val_GST_hour < 10 Then
         Str_GST_hour = "0" & Trim(Str(Val_GST_hour))
    Else
          Str_GST_hour = Trim(Str(Val_GST_hour))
    End If
        
    FileName = HB & Str_GST_day & Str_GST_hour & Str_30 & EHB
         Find_File = Dir(FileName, vbNormal)
    If Find_File = FileName Then
         Find_Result = True
         Exit Sub
    End If
    FileName = HB & Str_GST_day & Str_GST_hour & Str_40 & EHB    Find_File = Dir(FileName, vbNormal)
    If Find_File = FileName Then
         Find_Result = True
         Exit Sub
    End If
    FileName = HB & Str_GST_day & Str_GST_hour & Str_50 & EHB    Find_File = Dir(FileName, vbNormal)
    If Find_File = FileName Then
         Find_Result = True
         Exit Sub
    End If
    '/
    '查找文件代码结束
    '/
    
    '/
    '/报警文件生成代码开始
   ChDrive ("C:")
   ChDir (word_list.Item(7))
    
    '/如果结果错误
    If Find_Result = False Then
    
        FileNumber = FreeFile
        If Day(Date) < 10 Then
           Str_day = "0" & Day(Date)
        Else
           Str_day = Day(Date)
        End If
        
        If Hour(Time) < 10 Then
           Str_hour = "0" & Hour(Time)
        Else
           Str_hour = Hour(Time)
        End If
        
        If Minute(Time) < 10 Then
           Str_minute = "0" & Minute(Time)
        Else
           Str_minute = Minute(Time)
        End If
        FileName = "A" & Str_day & Str_hour & Str_minute & "." & word_list.Item(8)
        Open FileName For Output As FileNumber
          
           Print #FileNumber, word_list.Item(8) & comma & word_list.Item(12) & comma & word_list.Item(1) & comma & word_list.Item(2) & Str_error & comma & Date & comma & Time
            
        Close FileNumber
        
        FileNumber = FreeFile
        Open "sendfile" For Output As FileNumber
        
           Print #FileNumber, "open " & word_list.Item(3)
           Print #FileNumber, "xxr2"
           Print #FileNumber, "xxr2"
           Print #FileNumber, "cd /"
           Print #FileNumber, "cd " & word_list.Item(5)
           Print #FileNumber, "lcd " & word_list.Item(7)
           Print #FileNumber, "asc"
           Print #FileNumber, "prompt"
           Print #FileNumber, "put " & FileName
           Print #FileNumber, "bye"
            
           
        
        Close FileNumber
        
        ChDrive ("C:")
        ChDir (word_list.Item(7))
        
        FileNumber = FreeFile
        Open "pingip.bat" For Output As FileNumber
        
        Print #FileNumber, "ping " & word_list.Item(3) & " > " & word_list.Item(9) & "result.txt"
        
        Close FileNumber
                
        
        Shell (pingip.bat)
        
        
        
        ChDrive ("c:")
        ChDir (word_list.Item(9))
   
        FileNumber = FreeFile
        Open "result.txt" For Input As FileNumber
   
           Do While Not EOF(FileNumber)
     
              Line Input #FileNumber, result_file
              If InStr(1, result_file, "bytes from", vbTextCompare) > 0 Then
              
                   str_ftp = "ftp " & "-s " & word_list.Item(9) & "sendfile"
                   
                   Shell (str_ftp)
              
              End If
                
              
            Loop
        Close FileNumber
                        
        
       
        
      '/如果结果正确
     Else
     
     '/状态文件生成代码
     FileNumber = FreeFile
        If Day(Date) < 10 Then
           Str_day = "0" & Day(Date)
        Else
           Str_day = Day(Date)
        End If
        
        If Hour(Time) < 10 Then
           Str_hour = "0" & Hour(Time)
        Else
           Str_hour = Hour(Time)
        End If
        
        If Minute(Time) < 10 Then
           Str_minute = "0" & Minute(Time)
        Else
           Str_minute = Minute(Time)
        End If
        FileName = "St" & Str_day & Str_hour & Str_minute & "." & word_list.Item(9)
        Open FileName For Output As FileNumber
          
           Print #FileNumber, word_list.Item(1) & comma & Sta_right & comma & word_list.Item(10) & comma & word_list.Item(11) & Date & comma & Time & comma & Explain
            
        Close FileNumber
        
        FileNumber = FreeFile
        Open "sendfile" For Output As FileNumber
        
           Print #FileNumber, "open " & word_list.Item(3)
           Print #FileNumber, "xxr2"
           Print #FileNumber, "xxr2"
           Print #FileNumber, "cd /"
           Print #FileNumber, "cd " & word_list.Item(6)
           Print #FileNumber, "lcd " & word_list.Item(7)
           Print #FileNumber, "sci"
           Print #FileNumber, "prompt"
           Print #FileNumber, "put " & FileName
           Print #FileNumber, "bye"
            
           
        
        Close FileNumber
        
        
        ChDrive ("C:")
        ChDir (word_list.Item(10))
        
        FileNumber = FreeFile
        Open "pingip.bat" For Output As FileNumber
        
        Print #FileNumber, "ping " & word_list.Item(3) & " > " & word_list.Item(9) & "result.txt"
        
        Close FileNumber
                
        
        Shell ("pingip.bat")
        
   
 
   ChDrive ("c:")
   ChDir (word_list.Item(7))
   
   FileNumber = FreeFile
   Open "result.txt" For Input As FileNumber
   
     Do While Not EOF(FileNumber)
     
        Line Input #FileNumber, result_file
              If InStr(1, result_file, "bytes from", vbTextCompare) > 0 Then
              
                   str_ftp = "ftp " & "-s " & word_list.Item(9) & "sendfile"
                   
                   Shell (str_ftp)
              
              End If
     Loop
   Close FileNumber
                        
  
        
          
     End If
     
    Seek_Start_Flag = False
  End If
     
 End If
 
  
End Sub

解决方案 »

  1.   

    哥们,好多else,哪一个不能用,说明一下 啊!
      

  2.   

    \\Find_Result = True
    Exit Sub
    \\
    如果Find_Result等于true,就已经退出了这个过程.因为你执行了Exit Sub
      

  3.   

    谢谢,在试
    shell中的部分也没有执行
    我想在shell中执行这个:ping 192.6.17.5  > a.txt 和 ftp -s sendfile
    sendfile中包括
    open 192.6.17.5
    xxr2
    xxr2
    cd /
    cd /home/xxr2/alert
    lcd C:\PCVSAT\SENDFILE
    asc
    prompt
    put A161626.012
    bye
      

  4.   

    你的代码太不规整了。
    代码逻辑不太清楚。在前两项查找中即使找到,执行后面的代码时 Find_Result 又编程 False 了。        FileName = HB & Str_GST_day & Str_GST_hour & Str_30 & EHB
            Find_File = Dir(FileName, vbNormal)
            
            If Find_File = FileName Then
                Find_Result = True
                GoTo EndSearch
            End If
            
            FileName = HB & Str_GST_day & Str_GST_hour & Str_40 & EHB
            Find_File = Dir(FileName, vbNormal)
            If Find_File = FileName Then
                Find_Result = True
                GoTo EndSearch
            End If
            
            FileName = HB & Str_GST_day & Str_GST_hour & Str_50 & EHB
            Find_File = Dir(FileName, vbNormal)
            If Find_File = FileName Then
                Find_Result = True
            End If
        '/
        '查找文件代码结束
        '/
    EndSearch:
        '/
        '/报警文件生成代码开始
      

  5.   

    另外:If Seek_Start_Flag = False Then
        Seek_StarTime = DateAdd("N", word_list.Item(13), Time)
        Seek_Start_Flag = True         '既然这里强制设置为 True
    End If
      
    If Seek_Start_Flag = True Then     '这里就不必要了