Ich mache eine einfache Subtraktion zwischen zwei Zellen, die Daten enthalten, um den Zeitraum zu erhalten. Jedem Client, in Data_p Arbeitsblatt, Bereich ("4"), werden alle Bestelldaten in der jeweiligen Spalte angezeigt. Also wird die Subtraktion zwischen dem zweiten Datum und dem ersten usw. liegen und das Ergebnis wird in Data_p_mgnt eingefügt. Diese Funktion muss ausgeführt werden, bis für jeden Client keine Daten mehr vorhanden sind.Do bis IsEmpty funktioniert nicht, irgendwelche Ideen?
Ich habe den folgenden Code, aber ich weiß nicht, warum es nicht aufhören wird, wenn es findet und leere Zelle in Data_p. Jeder Einblick wird geschätzt.
Sub Prueba_Data_p_mgnt()
Sheets("Data_p_mgnt").Select
Range("B5").Select 'Starts in cell B5
Do Until IsEmpty(Worksheets("Data_p").Range("B5")) 'Checks if cells in Data_p are Empty or Blank
ActiveCell.FormulaR1C1 = "=Data_p!R[1]C-Data_p!RC" 'Makes the subtraction between cells
ActiveCell.Offset(1, 0).Range("A1").Select 'Moves down for paste the next period
Loop 'Loop until there's an Empty cell in Data_p
'Then should move to next client to the right and repeat until there are no more clients in row 4
End Sub
Sie sind immer testen Range ("B5"). Sie ändern B5 nicht in ein leeres Feld, dann wird es für immer eine Schleife durchlaufen. –
Sie testen nicht einmal etwas anderes als 'Range (" B5 ")'. – Comintern
@ScottCraner hat es - lesen Sie durch [wie vermeiden Sie mit '.Select' /' .Activate'] (http://StackOverflow.com/Questions/10714251/how-to-avoid-using-select-in-excel- vba-macros) und wenden Sie an, was Sie lernen, das sollte das Problem entfernen. Um den Code unverändert zu lassen, sollten Sie 'Do Until IsEmpty (ActiveCell) 'verwenden ... aber tun Sie das nicht, verwenden Sie die Bereiche. Schauen Sie einfach nach, wie Sie dynamisch durch Zellen/einen Bereich loopen können. – BruceWayne