Forfatter |
Emne Søg Emne funktioner
|
Erik_O
Forum Begynder
Medlem: 04.Dec.2016
Land: Danmark
Status: Offline
Point: 4
|
Emne: Adresse på start/slut i en Range? Sendt: 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
Med venlig hilsen Erik
|
|
|
|
|
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
Accepteret svar
Sendt: 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 !!!
|
|
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
Sendt: 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 !!!
|
|
Erik_O
Forum Begynder
Medlem: 04.Dec.2016
Land: Danmark
Status: Offline
Point: 4
|
Sendt: 04.Dec.2016 kl. 17:55 |
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
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
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.
|
|
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
Sendt: 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 !!!
|
|
Erik_O
Forum Begynder
Medlem: 04.Dec.2016
Land: Danmark
Status: Offline
Point: 4
|
Sendt: 04.Dec.2016 kl. 19:07 |
Din kode gør det samme som min 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.
|
|
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
Accepteret svar
Sendt: 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 !!!
|
|
Erik_O
Forum Begynder
Medlem: 04.Dec.2016
Land: Danmark
Status: Offline
Point: 4
|
Sendt: 04.Dec.2016 kl. 20:13 |
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
Tusind tak for hjælpen!
|
|