Avatar billede Sidsel Seniormester
19. maj 2020 - 13:02 Der er 13 kommentarer og
1 løsning

VBA range uden specifik adresse

Hej.
Jeg skal udfylde en range i kollone b med værdien 45.
Range skal starte fra den første tomme celle i KolB og slutte i den række hvor sidste udfyldte celle i KolP er.

Min kode er således:
      Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("B?:b" & Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("p6500").End(xlUp).Row) = "45"

Det er der hvor der står B? som jeg ikke kan finde ud af.
Avatar billede thomas_bk Ekspert
19. maj 2020 - 13:14 #1
Jeg skal lige forstå, din range er den ikke et antal celler på den måde som du angiver det?
Skal der stå 45 i alle de celler?
Avatar billede Sidsel Seniormester
19. maj 2020 - 13:25 #2
jeg forstår ikke spørgsmålet.
der skal stå 45 i alle de tomme celler i KolB til og med den række hvor der er udfyldt noget i KolP

Jeg kan forsøge at give et eksempel:
Hvis i Kolb første tomme celle er b7 og i KolP er første tomme celle c21.
Der skal så stå 45 i cellerne b7:b20.
Avatar billede thomas_bk Ekspert
19. maj 2020 - 13:55 #3
Jeg synes blot at det var "underligt" at skrive 45 i flere celler, så jeg vil blot sikre mig at det var det som du mente.

Jeg vil anbefale at du laver to udregninger. En for hver kolonne for at finde den relevante række.
Herefter en ny udregning hvor du kombinere de to udregninger til en samlet range.

Dette for at bevare overblikket i udregningen.
I og med at du beregner på flere kolonner men ikke med henblik på en samlet range, synes jeg at din tilgangsvinkel er kompleks.
Avatar billede Jan K Ekspert
19. maj 2020 - 13:59 #4
#3 - der skal vel ikke beregnes noget, bare udfyldes med 45, hvis B-kolonnen er tom og C-kolonnen ikke er tom.
Avatar billede Sidsel Seniormester
19. maj 2020 - 13:59 #5
Okay, Jeg tror jeg forstår hvad du siger, men jeg har intet begreb om hvordan?
Avatar billede thomas_bk Ekspert
19. maj 2020 - 14:05 #6
#4
Enig, der kan jo laves en løkke som vurderer på b og p løbende og udfylder med 45  som alternativ til at finde den relevante range i kolonne b først med henblik på udfyldelse.
Avatar billede Jan K Ekspert
19. maj 2020 - 14:37 #7
Prøv med denne kode:

For Each c In Range("b:B").Cells
    If IsEmpty(c) Then
        If Not IsEmpty(c.Offset(0, 1)) Then
            c.Value = 45
        Else
            Exit Sub
        End If
    End If
Next

Ret selv til med dine egen arkreferencer og områder.
Avatar billede thomas_bk Ekspert
19. maj 2020 - 14:47 #8
+1 til #7
jeg tillader mig med et alternativ

  Dim row_p As Integer
  Dim row_b As Integer
  Dim c As Range
 
  row_b = Range("B1").End(xlDown).Offset(1, 0).Row
  row_p = Range("p65536").End(xlUp).Offset(-2, 0).Row - 1
 
  For Each c In Range(Cells(row_b, 2), Cells(row_p, 2))
    c.Value = 45
    Next
Avatar billede thomas_bk Ekspert
19. maj 2020 - 14:50 #9
Se bort fra ovenstående eller evt brug dette.
#7 er bedst.

Sub ShadeEverySecondRow()
  Dim row_p As Integer
  Dim row_b As Integer
  Dim c As Range
 
  row_b = Range("B1").End(xlDown).Offset(1, 0).Row
  row_p = Range("p65536").End(xlUp).End(xlUp).Row - 1
 
  For Each c In Range(Cells(row_b, 2), Cells(row_p, 2))
    c.Value = 45
    Next
End Sub
Avatar billede store-morten Ekspert
19. maj 2020 - 18:47 #10
Måske:

Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("B" & Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("p6500").End(xlUp).Row + 1 & ":b" & Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("p6500").End(xlUp).Row) = "45"
Avatar billede thomas_bk Ekspert
19. maj 2020 - 19:13 #11
Hvis det virker, så er det jo fint :-)
Avatar billede store-morten Ekspert
19. maj 2020 - 20:20 #12
Det gør det ikke ;-) Der er en lille fejl.

Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("B" & Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("B6500").End(xlUp).Row + 1 & ":B" & Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("P6500").End(xlUp).Row) = "45"
Avatar billede Sidsel Seniormester
26. maj 2020 - 12:40 #13
store_morten #12 virker lige præcis :) tak for hjælpen.
Avatar billede store-morten Ekspert
26. maj 2020 - 14:13 #14
Velkommen 😎
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester