Avatar billede lineriber Praktikant
01. december 2010 - 14:53 Der er 14 kommentarer og
1 løsning

Macro/VBA der kan markere område med data

Hej

Hvordan skriver man i VBA/makro at der skal markeres et område fra kolonne A2 til G2, og lige så lang ned der er data.
Den skal kunne tage højde for, at der kan forekomme flere blanke felter i de forskellige kolonner (også i kolonne A og G).
Der skal simpelthen markeres helt ned til der ikke er flere data i arket
Jeg kender den med ctrl+shift+* der giver "Selection.CurrentRegion.Select", men så kan jeg jo ikke vælge kun at få markeret fra række 2 og nedaf.....
Og den tager heller ikke højde for at der er en helt linie der er blank i alle felter!

Nogen der kan hjælpe??
Avatar billede svla Mester
01. december 2010 - 20:31 #1
Hej !

Prøv den VBA-kode her:

Dim SAntalrækker As String
Const G = "G"

Sub Makro1()

  SAntalrækker = ActiveCell.SpecialCells(xlLastCell).Row
  Range("A2" & ":" & G & SAntalrækker).Select
End Sub
Avatar billede Ialocin Novice
01. december 2010 - 21:03 #2
Hej lineriber

Eller hvad med denne her:

Jeg har lavet en kommandoknap (cmdMarkerOmråde) på arket med følgende vba kode:


Private Sub cmdMarkerOmråde_Click()
Dim a As Integer  'variabel til rækkenummeret på den sidste række med data/formler i kolonne a
Dim g As Integer  'variabel til rækkenummeret på den sidste række med data/formler i kolonne g



'tildel variablen a, rækkenummeret på sidste række indeholdende data i kolonne a
a = ActiveSheet.Range("A65536").End(xlUp).Row

'tildel variablen g, rækkenummeret på sidste række indeholdende data i kolonne g
g = ActiveSheet.Range("G65536").End(xlUp).Row


    'hvis rækkenummeret a er større end rækkenummeret g
    If a > g Then

        'marker fra A2 til G & a
        ActiveSheet.Range("A2:G" & a).Select

    Else
   
        'marker fra A2 til g & g 
        ActiveSheet.Range("A2:G" & g).Select
       
    End If
End Sub


Med venlig hilsen, Nicolai
Avatar billede lineriber Praktikant
02. december 2010 - 10:40 #3
Svia: din VBA markere ikke kun området med data, men helt ned til række 516.289......??


Lalocin: Din virker ikke, hvis feltet i kolonne a og g i sidste række er blanke.....
Og hvis jeg har mere end 65.536 linier får jeg fejl på:
"a = ActiveSheet.Range("A65536").End(xlUp).Row"
Avatar billede newbieatphp Nybegynder
02. december 2010 - 18:17 #4
Hvad med denne her:

Sub sidste()
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Range("A2:G" & LastRow).Select
End Sub
Avatar billede svla Mester
02. december 2010 - 18:47 #5
Hej

Der var vist lige noget jeg havde glemt, jeg kender godt problemet i men makro nu du skrev om det.

- Men så prøvede jeg newbieatphp makro, den kunne jeg heller ikke få til og virke, men så rettede jeg den lige lidt og så virkede det perfekt her hos mig, den ser således ud nu:

Const G = "G"
Dim LastRow As Integer

Sub Makro1()
 
  Range("A2").Select
  LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
 
  Range("A2:" & G & LastRow).Select
 
End Sub
Avatar billede newbieatphp Nybegynder
02. december 2010 - 19:05 #6
svla, hvilken udgave har du?
Avatar billede svla Mester
02. december 2010 - 23:19 #7
Udgave, - Hvad tænker du på ?

Jeg har følgende:
Windows 7 64 bits
Microsoft Office 2010 Pro plus

Hvis du tænker på det med at jeg rettede din makro til, så virkede den ikke før jeg havde dim din variabel LastROW, og så gik det bedre efter jeg havde lavet din kolonne G  som konstant.
Herefter blev makroen betydelig hurtigere, ellers stod den og ventede på et eller andet.
Avatar billede svla Mester
02. december 2010 - 23:26 #8
Problemet med at at min og lalocin's makro fik for mange rækker med eller meldte fejl er tilsyneladende væk med den makro som du kom med. Fint nok selv om jeg rettede lidt på den.
Avatar billede newbieatphp Nybegynder
02. december 2010 - 23:34 #9
Det var excel udgaven jeg tænkte på...
Var bare nysgerig, havde en fornemmelse at det var en af de nye .. sidder selv med 02/03 udgaven.

Her virker det fint og hurtig nok ... men det er altid fint lige at deklarere sine variabler :)
Avatar billede svla Mester
02. december 2010 - 23:44 #10
Din måde/makro og markerer et område på vil jeg lige gemme til en anden god gang, for dert virker faktisk meget fint.

Den jeg foreslog først har faktisk et problem, den virker første gang den bliver kørt, men hvis man så sletter nogle rækker sidst i markeringen, og så kører koden igen, vil det samme område igen blive markeret. Problemet løses ved at man 0-stiller sit excelark, og så kan man starte forfra, jeg har faktisk tidligere brugt lang tid på og finde ud af hvad der var galt.
Avatar billede newbieatphp Nybegynder
02. december 2010 - 23:58 #11
Det du evt. kunne gøre var at du deklarere de ting du skal bruge i selve makroen, det skulle gerne gør, at den ikke husker gamle søgninger fx.
Avatar billede lineriber Praktikant
03. december 2010 - 10:20 #12
Hej Svia og Newbieatphp

Jeg bruger som sagt excel 2007 engelsk udgave, på en Windows XP.

Jeg får fejl på begge jeres makroen, da jeg kører med "option explicit"

Newbieatphp:
Din virker hvis jeg fjerne "option explicit".

Svia din fejler både med og uden "option explicit", på denne linie:
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Avatar billede svla Mester
03. december 2010 - 17:29 #13
Jamen så er det jo Newbieatphp's makro du skal bruge.
Jeg tjekkede bare lige makroen af ren interesse, og lavede den så lidt om så den fungerede på min PC.

"Option explicit" betyder jo bare at variablerne skal være deklareret, fjerner du denne kode behøver man ikke det.
Avatar billede lineriber Praktikant
09. december 2010 - 08:42 #14
Smider du et svar newbieatphp??
Avatar billede newbieatphp Nybegynder
09. december 2010 - 13:38 #15
okay, et svar
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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