Excel - Vba rij invoegen en bereikbereik behouden

Kwestie

In VBA, hoe kopieer / plaats ik (op zijn plaats) een rij en zorg ervoor dat als de bronrij een kolombereik kruist, de nieuwe rij ook binnen het bereik valt en het bereik met 1 groter wordt (di de ingevoegde rij) .

Als de cursor zich op een rij boven aan een bereik bevindt, wordt de nieuwe rij geen lid van het bereik en wordt het bereik niet met één rij vergroot.

xlUp en xlDown maken geen verschil en laten ze ook niet weg (wat Excel zegt is het beste wat je kunt doen als je kolombereiken hebt die elkaar snijden).

Oplossing

Ik maak het volledig automatisch. U hoeft het bereik niet te benoemen. de macro "test" doet het. alleen de invoer die u moet zetten is dat u het nummer moet invoeren van de rij die moet worden verwijderd, bijvoorbeeld 2 of 3 of 4 wanneer het invoervak ​​verschijnt. Macro "ongedaan maken" maakt ongedaan wat de macro doet.

De database is als volgt van A1 naar A5

1

2

3

4

5

doe niets gewoon de macro "test" uitvoeren (beide macro's moeten gekopieerd worden in de module). Sorry dit is een ingewikkelde macro geworden. Ik heb geprobeerd 'formaat wijzigen' te gebruiken. op de een of andere manier lukte het me niet. Misschien kan een expert een betere oplossing bieden. Maar deze oplossing werkt. als je wilt dat het bereik van het benoemde bereik anders is, pas deze verklaring dan aan in de macro-test die bij je past

Bereik ("A2: a4"). Name = "myrange"

De macro's zijn:

Macro 1

 Sub test ()

Dim r As Range, j As Integer, k As Integer, m As Integer

ongedaan maken

Bereik ("A2: a4"). Name = "myrange"

Set r = Range ("myrange")

m = WorksheetFunction.Count (r)

'MsgBox m

k = InputBox ("typ het nummer van de te selecteren rij")

Tr (k) rechtenmenu.Selecteer

Set r = Range ("myrange")

j = Bereik ("myrange"). Cellen (1, 1) .Row

'MsgBox j

Selection.Rows.Insert

Als Selection.Row = j Dan

ActiveWorkbook.Names ( "mijnBereik"). Delete

Bereik (Cellen (Selection.Row, "A"), r.Cells (m, 1)). Name = "myrange"

Stop als

MsgBox-bereik ("myrange"). Adres

End Sub

Macro 2

 Sub ongedaan maken ()

Dim r As Range, c As Range

Stel r = Bereik (Bereik ("A1"), Cellen (Rows.Count, "A"). Einde (xlUp))

Voor elke c In r

Als c = "" Dan c.EntireRow.Delete

Volgende c

End Sub

Notitie

Bedankt aan venkat1926 voor deze tip
Vorige Artikel Volgende Artikel

Top Tips