Print side | Luk vindue

Adresse på start/slut i en Range?

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=2853
Udskrevet den: 23.Nov.2024 kl. 15:17


Emne: Adresse på start/slut i en Range?
Besked fra: Erik_O
Emne: Adresse på start/slut i en Range?
Posteringsdato: 04.Dec.2016 kl. 16:31
Hej,

Jeg har brug for en funktion, der returnerer værdierne for adressen på hhv. start- og slutcellen i en Range, f.eks. 1, 1 og 3, 3 - hvis Rangen går fra A1 til C3.

Det tætteste jeg kan komme er følgende kode :

Dim oRange As Range
Dim startRow As Integer
Dim endRow As Integer
Dim startCol As Integer
Dim endCol As Integer


With Selection
    startRow = .Rows(1).Row
    startCol = .Columns(1).Column
    endRow = .Rows(Selection.Rows.Count).Row
    endCol = .Columns(Selection.Columns.Count).Column

End With

Range("a1") = startRow
Range("b1") = startCol
Range("a2") = endRow
Range("b2") = endCol


Makroen returnerer de 4 værdier, jeg har brug for - men i hver sin celle. Hvordan får jeg mon "samlet" værdierne startRow/startCol - og endRow/endCol - i en variabel eller celle?

Håber, det giver mening Smile

Med venlig hilsen
Erik



Svar:
Besked fra: excelent
Posteringsdato: 04.Dec.2016 kl. 17:04
Ud fra din kode at dømme, har du allerede markeret aktuel område

så er det blot msgbox selection.address

-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: Erik_O
Posteringsdato: 04.Dec.2016 kl. 17:55
Citat: excelent excelent skrev:

Ud fra din kode at dømme, har du allerede markeret aktuel område

så er det blot msgbox selection.address

Hej Moderator,

Tak for dit svar Smile

Koden ovenfor sender værdien (eller tallet) for første række i Rangen til cellen A1, værdien for den første kolonne til B1, værdien for sidste række i A2 og værdien for sidste kolonne i B2 - efter at jeg manuelt har markeret et område og derefter startet makroen. 
De 4 celler (A1:B2") er tilfældigt valgte, bare for at jeg nemt kan se værdierne, når jeg tester Smile

Hvis jeg marker området A5:B7 og kører makroen, vil der stå tallet 5 i cellen A1, 1 i cellen B1, 7 i cellen A2 og 2 i cellen B2

Det jeg gerne vil opnå er, at værdien for den første række og første kolonne i Rangen kan sendes til en celle i formatet tal, tal - f.eks 5, 1 (for A5) og værdien for den sidste række og sidste kolonne, f.eks 7,2 til en anden celle.

Din kode angiver rigtig nok start- og slutadresserne på Rangen, men jeg skal bruge selve talværdierne i en anden makro.


Besked fra: excelent
Posteringsdato: 04.Dec.2016 kl. 18:40
Prøv :

Range("A1") = ActiveCell.Row
Range("B1") = ActiveCell.Column
Range("A2") = Selection.Rows.Count + ActiveCell.Row - 1
Range("B2") = Selection.Columns.Count + ActiveCell.Column - 1

-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: Erik_O
Posteringsdato: 04.Dec.2016 kl. 19:07

Din kode gør det samme som min Smile Jeg ville gerne have, at A1 fik værdien 5, 1 og A2 fik værdien 9, 2. Altså kun 2 værdier i stedet for 4.


Besked fra: excelent
Posteringsdato: 04.Dec.2016 kl. 19:47
ups :-)

Range("A1") = CDec(ActiveCell.Row & "," & ActiveCell.Column)
Range("A2") = CDec(Selection.Rows.Count + ActiveCell.Row - 1 & "," & Selection.Columns.Count + ActiveCell.Column - 1)


-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: Erik_O
Posteringsdato: 04.Dec.2016 kl. 20:13
Citat: excelent excelent skrev:

ups :-)

Range("A1") = CDec(ActiveCell.Row & "," & ActiveCell.Column)
Range("A2") = CDec(Selection.Rows.Count + ActiveCell.Row - 1 & "," & Selection.Columns.Count + ActiveCell.Column - 1)

Bingo! Det var lige præcis det, jeg ville opnå. Jeg skal vist lige bruge lidt tid på at forstå din kode, men den virker Smile

Tusind tak for hjælpen!



Print side | Luk vindue