Excel - Vba-rivin lisääminen ja valikoiman jäsenyyden säilyttäminen

Ongelma

Miten VBA: ssa kopioida / lisätä (paikalleen) rivi ja varmistaa, että jos lähdelista leikkaa sarakevalikoiman, uusi rivi olisi myös alueella ja alue kasvaa 1: llä (eli lisätty rivi) .

Jos kohdistin on rivillä, joka on alueen yläreunassa, uusi rivi ei tule alueen alueelle eikä alue lisää kokoa yhdellä rivillä.

xlUp ja xlDown eivät tee mitään eroa, eivätkä myöskään jätä niitä pois (mitä Excel sanoo, on parasta tehdä, jos sinulla on leikkaavia sarakekohtia).

Ratkaisu

Teen sen täysin automaattiseksi. Et tarvitse nimeä alueelle. makro "testi" tekee sen. vain syöttö, jonka sinun täytyy laittaa, sinun täytyy kirjoittaa poistettavan rivin numero esim. 2 tai 3 tai 4, kun syöttökenttä tulee esiin. Makro "undo" peruuttaa makron.

Tietokanta on näin A1: stä A5: een

1

2

3

4

5

älä tee mitään vain suorita makro "testi" (molemmat makro on kopioitava moduuliin). Anteeksi, siitä on tullut kieroutunut makro. Yritin käyttää "kokoa". jotenkin tai muuten en onnistunut. Ehkäpä joku asiantuntija voi antaa paremman ratkaisun. Mutta tämä ratkaisu toimii. jos haluat, että nimetyt alueet ovat erilaisia, muokkaa tätä lausuntoa makro "testissä", joka sopii sinulle

Alue ("A2: a4") Nimi = "myrange"

Makrot ovat:

Makro 1

 Sub-testi ()

Dim r As Range, j Kuten Integer, k Integer -arvona, m Integer

purkaa

Alue ("A2: a4") Nimi = "myrange"

Aseta r = alue ("myrange")

m = WorksheetFunction.Count (r)

'MsgBox m

k = InputBox ("kirjoita valitun rivin numero")

Rivit (k) .Select

Aseta r = alue ("myrange")

j = Range ("myrange"). Solut (1, 1)

MsgBox j

Selection.Rows.Insert

Jos valinta.Row = j Sitten

ActiveWorkbook.Names ( "myrange"). Poista

Alue (solut (valinta. Rivi, "A"), r.kuoret (m, 1)) Nimi = "myrange"

Loppu Jos

MsgBox-alue ("myrange")

Lopeta Sub

Makro 2

 Peruuta peruutus ()

Dim r As Range, c As Range

Aseta r = Alue (alue ("A1"), solut (rivit.Luku, "A"). Loppu (xlUp))

Jokaiselle c: lle r

Jos c = "" Sitten c.EntireRow.Delete

Seuraava c

Lopeta Sub

Huomautus

Kiitos venkat1926 tästä vinkistä
Edellinen Artikkeli Seuraava Artikkeli

Top Vinkkejä