Excel - Vba umetanjem retka i zadržavanjem članstva u rasponu

Problem

U VBA, kako mogu kopirati / umetnuti (na mjestu) redak i osigurati da, ako je izvorni red presjekao raspon stupaca, da bi novi red također bio u rasponu i da će raspon rasti za 1 (tj. Umetnuti redak),

Ako se pokazivač nalazi na retku koji se nalazi na vrhu raspona, novi redak ne postaje član raspona, a raspon ne povećava veličinu za jedan redak.

xlUp i xlDown ne čine razliku, niti ih napuštaju (što Excel kaže da je najbolja stvar ako se sijeku rasponi stupaca).

Riješenje

Učinit ću ga potpuno automatskim. Ne trebate imenovati raspon. makro "test" to radi. samo ulaz koji trebate staviti je da morate upisati broj retka koji želite izbrisati za npr. 2 ili 3 ili 4 kada se pojavi okvir za unos. Makro "poništi" poništava ono što makro radi.

Baza podataka je takva od A1 do A5

1

2

3

4

5

nemojte ništa raditi samo pokrenite makro "test" (oba makronaredba trebala bi se kopirati u modul). Nažalost, ovo je postala zamršena makronaredba. Pokušao sam koristiti "veličinu". nekako nisam uspio. Možda neki stručnjak može dati bolje rješenje. Ali ovo rješenje funkcionira. ako želite da se raspon imenovanog raspona razlikuje, izmijenite ovu izjavu u makro "testu" kako bi vam odgovarao

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

Makronaredbe su:

Makro 1

 Sub test ()

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

otkopčati

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

Postavi r = Raspon ("myrange")

m = Radna listaFunction.Count (r)

'MsgBox m

k = InputBox ("upišite broj retka koji se odabire")

Redova (k) .Odaberite

Postavi r = Raspon ("myrange")

j = Raspon ("myrange"). Ćelije (1, 1)

'MsgBox j

Selection.Rows.Insert

Ako je Selection.Row = j Zatim

ActiveWorkbook.Names ( "myrange"). Delete

Raspon (ćelije (odabir, redak, "A"), r.vrha (m, 1)) Naziv = "myrange"

Završi ako

Raspon MsgBoxa ("myrange"). Adresa

Kraj pod

Makro 2

 Sub poništi ()

Dim As As Range, c As Range

Postavi r = Raspon (raspon ("A1"), ćelije (redovi, broj "A"). Kraj (xlUp))

Za svaki c U r

Ako je c = "" Zatim c.EntireRow.Delete

Sljedeće c

Kraj pod

Bilješka

Zahvaljujući venkat1926 za ovaj savjet
Prethodni Članak Sljedeći Članak

Top Savjeta