|  
                                             Hallo Ralf 
Danke, Ich hätte mir auf die Zunge Beißen können, das ich da nicht selbst drauf gekommen bin. 
Jetzt ist mir aufgefallen das wenn ich das Makro durchlaufen lasse, schreibt es mir überall in Spalte "S" 0 rein. 
Ich habe herausgefunden, das der Ping aufruf eine Zeit braucht bis er die 1 zurück gibt. 
Bis dahin ist das Programm bereits über den Schreiben der Variablen "Pingtest" drüber. 
Ich habe es jetzt erst einmal ganz primitiv über ein "Sleep 2000" überbrückt. 
Das funktioniert auch erstmal. 
Lieber wäre es mir aber wenn ich das Makro solange anhalten könnte bis der Ping fertig ist. 
Ich nehme an, das es da etwas gibt. 
Könnte z.B. objExec.status sein. 
Oder irgendein anderer Teil der Variablen. 
Ich habe bei Google leider keine einfache Beschreibung des Ping gefunden. 
Vielleicht kennt ja von euch jemand die Variable? 
Set objExec = WSHShell.Exec("%comspec% /c Ping " & strText & " -n 1 -w 1000") 
Was bedeutet zum Beispiel das "-w 1000" 
"%comspec% /c Ping " 'das scheint der Ping aufruf zu sein 
& strText &  ' da ist die IP drin 
-n 1  ' die Anzahl der Durchläufe (hier 1x) 
w 1000  ' Das ist wohl eine Zeit, ich weis aber nicht welche. 
Wie immer danke ich euch sehr für eure Hilfe 
Das ist mein aktueller Code: 
  
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr) 
Public Sub Aufruf() 
    Dim Zelle As Range 
      'Dim objExec As Object 
    For Each Zelle In Range("N13:N15") 
      If Zelle.Value Like "?*.?*.?*.?*" Then 
        Cells(Zelle.Row, "S") = pingtest(Zelle.Value) 
      End If 
   
    Next 
End Sub 
Function pingtest(strText As String) 
    Dim ws As Worksheet 
    Dim WSHShell As Object 
    Dim objExec As Object 
    Set WSHShell = CreateObject("WScript.Shell") 
    Set objExec = WSHShell.Exec("%comspec% /c Ping " & strText & " -n 1 -w 1000") 
     
'       Do Until objExec.Status   ' Das habe ich aus einem anderen Code, gibt aber Fehler aus. 
'     'WScript.Sleep 10 
'     i = i + 1 
'     If i > 100 Then objExec.Terminate 
'   Loop 
 
    Sleep 2000 
    pingtest = objExec.ExitCode 'objExec.StdOut.readall 
      
  'Range("S1").Value = objExec.exitcode 
 
End Function 
  
     |