Pitäisi saada siirrettyä kursoria makrolla esim. rivi alaspäin ja muutama sarake oikealle niin, ettei anneta uutta osoitetta, esim. siis ei B1, vaan siltä riviltä missä kursori sattuu olemaan, niin yksi rivi alaspäin. Miten moinen tehdään?
Kursorin siirto makrolla
9
761
Vastaukset
- Anonyymi
Mitä sinä sillä tiedfolla tekisit?
- Anonyymi
Sub siirry(r, c)
ActiveCell.Offset(r, c).Select
End Sub- Anonyymi
Tuo makro muuttaa aktiivisen solun paikkaa mihin tahansa suuntaan.
siirry(1,0) siirtää sitä rivin alaspäin. - Anonyymi
Anonyymi kirjoitti:
Tuo makro muuttaa aktiivisen solun paikkaa mihin tahansa suuntaan.
siirry(1,0) siirtää sitä rivin alaspäin.Ei ihan se mitä tarkoitin. Tuo makro valitsee vain esim. seuraavan solun vaikkapa alaspäin, mutta jos on piilotettuja rivejä seuraavana tuntematon määrä, niin pitäisi saada kursori siirtymään seuraavalle näkyvälle riville eli niin kuin nuolinäppäimellä tuo siirtyisi. Ongelmana tässä on se, että ei etukäteen tiedetä seuraavan näkyvän rivin osoitetta.
- Anonyymi
Anonyymi kirjoitti:
Ei ihan se mitä tarkoitin. Tuo makro valitsee vain esim. seuraavan solun vaikkapa alaspäin, mutta jos on piilotettuja rivejä seuraavana tuntematon määrä, niin pitäisi saada kursori siirtymään seuraavalle näkyvälle riville eli niin kuin nuolinäppäimellä tuo siirtyisi. Ongelmana tässä on se, että ei etukäteen tiedetä seuraavan näkyvän rivin osoitetta.
Do While rng.EntireRow.Hidden Or rng.EntireColumn.Hidden
Set rng = rng.Offset(1, 0)
Loop
rng.Select
Tuon pitäisi valita seuraava näkyvä solu. - Anonyymi
Anonyymi kirjoitti:
Ei ihan se mitä tarkoitin. Tuo makro valitsee vain esim. seuraavan solun vaikkapa alaspäin, mutta jos on piilotettuja rivejä seuraavana tuntematon määrä, niin pitäisi saada kursori siirtymään seuraavalle näkyvälle riville eli niin kuin nuolinäppäimellä tuo siirtyisi. Ongelmana tässä on se, että ei etukäteen tiedetä seuraavan näkyvän rivin osoitetta.
Tämä muuttaa aktiivisen solun paikkaa mihin tahansa suuntaan näkyvällä alueella:
Sub siirry(r, c)
dr = 0
Do
ActiveCell.Offset(Sgn(r), 0).Select
If ActiveCell.EntireRow.Hidden = False Then dr = dr + Sgn(r)
Loop While dr <> r
dc = 0
Do
ActiveCell.Offset(0, Sgn(c)).Select
If ActiveCell.EntireColumn.Hidden = False Then dc = dc + Sgn(c)
Loop While dc <> c
End Sub - Anonyymi
Anonyymi kirjoitti:
Do While rng.EntireRow.Hidden Or rng.EntireColumn.Hidden
Set rng = rng.Offset(1, 0)
Loop
rng.Select
Tuon pitäisi valita seuraava näkyvä solu.Tuosta alusta puuttuu Set Rng = ActiveCell
Lisäksi lopetusehdon pitäisi olla silmukan lopussa .
Set Rng = ActiveCell
Do
Set Rng = Rng.Offset(1, 0)
Debug.Print Rng.Address
Loop While Rng.EntireRow.Hidden Or Rng.EntireColumn.Hidden
Rng.Select Anonyymi kirjoitti:
Ei ihan se mitä tarkoitin. Tuo makro valitsee vain esim. seuraavan solun vaikkapa alaspäin, mutta jos on piilotettuja rivejä seuraavana tuntematon määrä, niin pitäisi saada kursori siirtymään seuraavalle näkyvälle riville eli niin kuin nuolinäppäimellä tuo siirtyisi. Ongelmana tässä on se, että ei etukäteen tiedetä seuraavan näkyvän rivin osoitetta.
Sub Siirry()
SendKeys "{Down}"
End Sub
@Kunde
Keep EXCELing- Anonyymi
kunde kirjoitti:
Sub Siirry()
SendKeys "{Down}"
End Sub
@Kunde
Keep EXCELingKiitos! Tuota juuri hain. Siitä tuli lopulta tämän näköinen:
Sub Siirry()
SendKeys "{Down}"
SendKeys "+{Right 10}"
End Sub
Lisäsin siihen myös valinnan.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Mies vinkkinä sulle
Jos pyytäisit kahville tai ihan mihin vaan, niin lähtisin varmasti välittämättä muista857425- 965374
- 2554544
- 444465
- 623237
- 482656
Olet oikeasti ollut
Niin tärkeä mulle ja kaikki meidän väliltä on pilattu ei yksistään sinun toiminnalla vaan minun myös.222338Kuuluu raksutus tänne asti kun mietit
Pelkäätkö että särjen sydämesi vai mikä on? En mä niin tekisi mies koskaan 😘292302- 492252
- 412164