Αντιγράψτε ένα εύρος στη θέση του Activecell σε ένα φύλλο βάσης δεδομένων χρησιμοποιώντας VBA στο Microsoft Excel

Anonim
  • Τα παραδείγματα κωδικών θα αντιγραφούν σε ένα φύλλο βάσης δεδομένων με το όνομα Sheet2.
  • Κάθε φορά που εκτελείτε ένα από τα subs, τα κελιά θα τοποθετούνται κάτω από την τελευταία σειρά με δεδομένα ή μετά την τελευταία στήλη με δεδομένα στο φύλλο2.
  • Για κάθε παράδειγμα υπάρχει μια μακροεντολή που κάνει ένα κανονικό αντίγραφο και μία που είναι μόνο Αντιγραφή των τιμών.
  • Τα παραδείγματα υποκατάστασης χρησιμοποιούν τις παρακάτω συναρτήσεις (οι μακροεντολές δεν θα λειτουργήσουν χωρίς τις συναρτήσεις).
Sub CopyToActiveCell () Dim sourceRange As Range Dim disrange As Range If Selection.Cells.Count> 1 Τότε Έξοδος από το Sub Set sourceRange = Sheets ("Sheet1"). Range ("A1: C10") Set destrange = ActiveCell sourceRange.Copy destrange End Sub Sub CopyToActiveCellValues ​​() Dim sourceRange As Range Dim disrange as Range If Selection.Cells.Count> 1 Τότε Έξοδος από το Sub Set sourceRange = Sheets ("Sheet1"). Range ("A1: C10") With sourceRange Set destrange = ActiveCell.Resize _ (.Rows.Count, .Columns.Count) Τέλος με destrange.Value = sourceRange.Value End Sub Function LastRow (sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ Μετά: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Row On Error GoTo 0 End Function Συνάρτηση Lastcol (sh As Worksheet) On Error Resume Next Lastcol = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas , _ SearchOrder: = xlByColumns, _ SearchDirection: = xlΠροηγούμενο, _ MatchCase: = False). Σφάλμα στήλης On GoTo 0 End Function