2016-09-30 2 views
-1

VBA Anfänger hier. Ich versuche, einen VBA-Code abhängig vom Datum zu erstellen. Hier sind meine Informationen:Kopieren Sie Zellen und fügen Sie durch das Überschreiben von Zellen in einem anderen Blatt auf der Grundlage eines Kriteriums

Sheet 1: Ich habe eine Tabelle bei Zelle A1 und gehe zu G29. Zelle B2 hat das Datum, das mit der TODAY-Option in Excel codiert wurde.

Jetzt muss diese Tabelle jeden Tag aktualisiert werden, aber sobald der Tag vorbei ist, möchte ich den Inhalt dieser Tabelle speichern und Blatt 1 für den nächsten Tag löschen. Ich möchte alles in einem versteckten Blatt, Blatt 2 speichern.

Im Moment habe ich es geschafft, alles kopieren und in Blatt 2 einfügen und aktivieren Sie dann eine Zelle unter meinem Tisch, so dass es bereit ist, Kopie zu sein und klebte am nächsten Tag.

Das Problem, das ich habe, ist, dass jedes Mal, wenn ich mein Makro ausführe, kopiert und fügt die Tabelle in die ausgewählte Zelle unter dem, was ich bereits in Blatt 2 habe. So für ein bestimmtes Datum könnte ich 3 haben, 4,5, welche Variationen der gleichen Tabelle, alle untereinander.

Was ich daher tun möchte, ist meine VBA-Code, dass, wenn der Wert in Zelle B2 (Blatt 1) ​​ist x und der Wert in der entsprechenden Datumszelle in Blatt 2 ist gleich, zu kopieren und fügen Sie diese Zellen.

Ich weiß, wie das letzte bisschen zu tun ist, was ich möchte helfen herauszufinden (für jetzt) ​​ist, wie ich es meine spezifische Suche und Aktivierung von Zellen auf beiden Blättern zu tun, unter Berücksichtigung wissen muss es sein allgemein gehalten, da nach einem Datum die nächste Datumszelle in Blatt 2 etwa 31 Zellen unter B2 sein wird, und dann 31 Zellen darunter, usw.

Ich hoffe, das macht Sinn. Wenn Leute irgendwelche Fragen haben, lass es mich wissen!

EDIT:

Hier ist meine aktuelle Makro

Sub Macro1() 
' 
' Macro1 Macro 
' 
' Acceso directo: CTRL+h 
' 
    Range("A1:G29").Select 
    Selection.Copy 
    Sheets("Hoja2").Select 
    Range("A1").Select 
    ActiveSheet.Paste 
    Range("A1").Select 
    ActiveCell.Offset(31, 0).Select 

End Sub 

Dies wird meine kopieren und einfügen und wählt die unten Zelle. Allerdings habe ich Probleme damit, Excel auf Basis des Datums in eine bestimmte Zelle einzufügen.

+2

Können Sie uns den Makrocode zeigen? –

+0

F Wort !! Es hat mein Makro nicht gespeichert: '(Ich werde es schnell wiederherstellen, wie kann ich es dann speichern? Ich nahm an, dass das Speichern meines Excel-Blattes es speichern würde ?? – Kaish

Antwort

0

Sie möchten überprüfen, ob das Datum im Quellblatt bereits im Zielblatt vorhanden ist. Wenn dies der Fall ist, fügen Sie die 29-Zeilen-Tabelle in den entsprechenden Bereich ein, andernfalls fügen Sie sie am unteren Rand ein. Folgendes sollte funktionieren:

Sub Macro1() 

target = Cells("B2") 
Range("A1:G29").Copy 
end = Sheets("Hoja2").Cells(1048576, 2).End(xlUp).row 'check the last filled in row 
tables = end/29 'counts how many tables are already pasted in the sheet 
for i = 1 to tables 
    index = (i-1)*29 + 2 'row index where the date is written 
    if Sheets("Hoja2").Cells("B" & index) = target then 'check if the date corresponds 
     Sheets("Hoja2").Range("A" & index - 1).Paste 
     Range("A" & index).Select 
     ActiveCell.Offset(31, 0).Select 
     exit sub 
    end if 
next i 
'the following lines are skipped if the for loop pastes the table 
Sheets("Hoja2").Range("A" & end + 1).Paste  
Range("A" & index).Select 
ActiveCell.Offset(31, 0).Select 

End Sub 
Verwandte Themen