Avatar billede olesendan Nybegynder
06. januar 2010 - 09:16 Der er 28 kommentarer og
1 løsning

Flette celler i rækker udfra uge nr.

Hej Alle

Jeg er ved at opbygge en Anual Training Plan.

I denne har jeg en række(B36:BB36) med uge nr. baseret på flg. formel(=HELTAL((B34-(DATO(ÅR(B34+(REST(8-UGEDAG(B34);7)-3));1;1))-3+REST(UGEDAG(DATO(ÅR(B34+(REST(8-UGEDAG(B34);7)-3));1;1))+1;7))/7)+1). I rækken (B35:BB35) har jeg indsat måned udfra uge nr. formlen.

Mit problem er at jeg gerne vil have at excel fletter de celler hvor den samme mdr. er vist. Kan dette lave sig gøre?

VH Dan
Avatar billede excelent Ekspert
06. januar 2010 - 16:13 #1
Sub Merge1()
Dim rng As Range
Dim rng2 As Range
Set rng = Sheets("Ark1").Range("B35:BB35") '** ret evt.Arknavn her

For t = 1 To 12
For Each c In rng
  If c = t Then
      If rng2 Is Nothing Then
        Set rng2 = c
            Else
        Set rng2 = Application.Union(rng2, c)
      End If
  End If
Next
rng2.Select
Application.DisplayAlerts = False

    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
   
Application.DisplayAlerts = True

Set rng2 = Nothing
Next
End Sub
Avatar billede olesendan Nybegynder
06. januar 2010 - 16:50 #2
Hej Excelent

Mange tak fordi at du gider at prøve og finde en løsning.

Jeg har sat din kode ind i arket. Skal ark navn være det navn jeg har givet arket i XL eller det ark navn som det har i VB.

Jeg har prøvet med det navn som XL viser giver den(ATP). Den kommer med flg fejl:
Object varible or with block varible not set

men nu kommer jeg helt i tvivl om hvilket format du vil have det i tekst el. tal?
Avatar billede excelent Ekspert
06. januar 2010 - 17:08 #3
Nå ja gik ud fra det var tal 1 til 12
er det datoer som er formateret til mmm el lign.
Avatar billede excelent Ekspert
06. januar 2010 - 17:13 #4
Det er navnet i XL du skal bruge
Avatar billede olesendan Nybegynder
06. januar 2010 - 17:34 #5
Hej

Ja, det er datoer, med mmmm formatet.

har også prøvet at lave dem om til tekst, men intet hjælper
Avatar billede excelent Ekspert
06. januar 2010 - 17:39 #6
prøv lige denne

Sub Merge1()
Dim rng As Range
Dim rng2 As Range
Set rng = Sheets("ATP").Range("B35:BB35")

For t = 1 To 12

For Each c In rng
  If Month(c) = t Then
      If rng2 Is Nothing Then
        Set rng2 = c
            Else
        Set rng2 = Application.Union(rng2, c)
      End If
  End If
Next
rng2.Select
Application.DisplayAlerts = False

    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
   
Application.DisplayAlerts = True

Set rng2 = Nothing
Next
End Sub
Avatar billede excelent Ekspert
06. januar 2010 - 17:41 #7
Hvis ikke du har tal op til 12 (december), så ret i koden til sidste måned i linie 5
Avatar billede olesendan Nybegynder
06. januar 2010 - 17:51 #8
Hej

Den springer december over, er det noget med mine uger at gøre?
Avatar billede olesendan Nybegynder
06. januar 2010 - 17:55 #9
hej

tror det er noget andet, jeg har lavet sådan at jeg angiver en start dato for min sæson. Når jeg skifter rundt med den, er det lidt forskellige måneder den springer over, den laver bare en mdr. dobbelt så lang.
Avatar billede excelent Ekspert
06. januar 2010 - 17:57 #10
ja eller antal, eller placering
jeg tror du skal skrive hvad du har hvorhenne
evt. også formlen i første celle, hvis dato er beregnet
Avatar billede excelent Ekspert
06. januar 2010 - 17:58 #11
ellers send filen, eller et eks.
Avatar billede olesendan Nybegynder
06. januar 2010 - 18:07 #12
har sendt en fil til dig

VH Dan
Avatar billede excelent Ekspert
07. januar 2010 - 15:44 #13
ok modtaget
Har lige skiftet til fibernet, så bøvler noget med mail opsætning
skal nok kikke på det senere
Avatar billede excelent Ekspert
07. januar 2010 - 17:36 #14
ok prøv :

Sub Merge2()
Dim rng As Range
Dim rng2 As Range
Application.ScreenUpdating = False
Set rng = Sheets("ATP").Range("B35:BB35")

For Each d In rng
For Each c In rng
  If Month(c) = Month(d) Then
      If rng2 Is Nothing Then
        Set rng2 = c
            Else
        Set rng2 = Application.Union(rng2, c)
      End If
  End If
Next
rng2.Offset(1, 0).Select

Application.DisplayAlerts = False

    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
   
Application.DisplayAlerts = True

Set rng2 = Nothing
Next
Application.ScreenUpdating = True
End Sub
Avatar billede olesendan Nybegynder
08. januar 2010 - 09:42 #15
Hej excelent

Denne virker.

dog vil jeg høre om man kan få den til at starte med at nulstille rækken først, dvs. ophæve alle flettninger. Derved kan jeg bare køre makroen hvis startdatoen bliver ændret.

lige et tillægsspørgsmål, nu har du jo set mit ark.
på ATP,en, kan man få indtastnings områderne til at følge dato rækken, dvs. hvis start dato bliver ændret, flytter mine indtastninger med til enten højre eller venstre.

VH Dan
Avatar billede excelent Ekspert
08. januar 2010 - 16:10 #16
Udskift din kode med denne, så kører koden når du skifter dato

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("R29")) Is Nothing Then Exit Sub
Dim rng As Range
Dim rng2 As Range
Application.ScreenUpdating = False
Set rng = Sheets("ATP").Range("B35:BB35")
Sheets("ATP").Range("B36:BB36").UnMerge

For Each d In rng
For Each c In rng
  If Month(c) = Month(d) Then
      If rng2 Is Nothing Then
        Set rng2 = c
            Else
        Set rng2 = Application.Union(rng2, c)
      End If
  End If
Next
rng2.Offset(1, 0).Select

Application.DisplayAlerts = False

    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
   
Application.DisplayAlerts = True
Selection = Selection.Offset(-1, 0).Value
Set rng2 = Nothing
Next
Application.ScreenUpdating = True
End Sub

Tillægsspørgsmål forstår jeg ikke helt
hvad er "Indtastnings områderne" ?
Avatar billede olesendan Nybegynder
08. januar 2010 - 19:07 #17
Hej excelent

den sidste kode sætter ikke kant på efter fletning. jeg har prøvet at rode lidt med det selv, fatter dog ikke noget, kan ikke få det til at virke.

er det korekt at jeg skal fjerne de to første linjer i den sidste kode, også lade de første linjer af den kode som hedder merge2() blive?

mht indtastningsomr. som er dette de hvide omr. i ATP, under uge nr.  her er det mening at sætter et bogstav alt efter hvilken periode denne uge skal være mærket som. De to nederste omr. vil blive brugt til at sætte tal ind, der viser træningen i de enkelte zoner.

VH Dan
Avatar billede excelent Ekspert
08. januar 2010 - 19:41 #18
Slet alt kode jeg har lavet
og så indsæt den sidste i arkets kodemodul - (kodemodulet finder du ved at højreklikke på arkfane og vælg "Vis programkode")
Avatar billede excelent Ekspert
08. januar 2010 - 19:53 #19
Tillægsspørgsmål fatter jeg ikke
Avatar billede olesendan Nybegynder
08. januar 2010 - 19:56 #20
Hej Excelent

er det mening at den kører automatisk?

Kan se at du har sat den til at kigge i r29. denne celle er nu kun en formel, skal jeg flytte den over til den celle som der bliver tastet i, dette er på et andet ark.
Avatar billede excelent Ekspert
08. januar 2010 - 22:34 #21
du skal rette R29 i koden til den celle du taster dato i
Avatar billede olesendan Nybegynder
08. januar 2010 - 23:06 #22
JEg kan stadig ikke få nakroen til at gå igang. Det felt jeg taster i er på et andet ark. I koden skriver ændrer jeg
(Target, Range("R29")) til
(Target, Sheets("Pers. opl").Range("H2")

er dette korrekt
Avatar billede olesendan Nybegynder
08. januar 2010 - 23:07 #23
JEg kan sagtens leve med at skal aktivere en makro via en genvejs tast, hvis det kan hjælpe os.
Avatar billede excelent Ekspert
09. januar 2010 - 09:57 #24
ok nej indtastnings celle skal være i samme ark som koden
men så smider du koden ind i et almindeligt Modul

I projektmappen taster du ALT+F11
I menuen Insert, vælger du Module
Indsæt koden der
Husk slet koden i Arkmodulet

Sub Merge3()
Dim rng As Range
Dim rng2 As Range
Application.ScreenUpdating = False
Set rng = Sheets("ATP").Range("B35:BB35")
Sheets("ATP").Range("B36:BB36").UnMerge

For Each d In rng
For Each c In rng
  If Month(c) = Month(d) Then
      If rng2 Is Nothing Then
        Set rng2 = c
            Else
        Set rng2 = Application.Union(rng2, c)
      End If
  End If
Next
rng2.Offset(1, 0).Select

Application.DisplayAlerts = False

    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
   
Application.DisplayAlerts = True
Selection = Selection.Offset(-1, 0).Value
Set rng2 = Nothing
Next
Application.ScreenUpdating = True
End Sub
Avatar billede excelent Ekspert
09. januar 2010 - 10:37 #25
OBS hvis du starter koden fra et andet ark, så indsæt lige

Sheets("ATP").Select

i starten af koden (som linie 4)
så arket bliver aktiveret
Avatar billede olesendan Nybegynder
09. januar 2010 - 19:45 #26
hej excelent.

Den er næsten i hus. Den fletter helt rigtigt. Den slutter dog ikke af med at sætte en kant linie på, bare i højre side er fint, så vil de være adskilt. Kan du hjæjpe med det.
Avatar billede excelent Ekspert
10. januar 2010 - 12:08 #27
Af en eller anden grund får jeg ikke mail når du kommenterer her i tråden, det er så årsagen til at der går lidt tid imellem

Men ja jeg er opmærksom på det med rammerne så prøv denne:
husk slet den gamle kode!

Sub Merge4()
Dim rng As Range
Dim rng2 As Range
Application.ScreenUpdating = False
Sheets("ATP").Select
Sheets("ATP").Range("B36:BB36").UnMerge
Set rng = Sheets("ATP").Range("B35:BB35")

For Each d In rng
For Each c In rng
  If Month(c) = Month(d) Then
      If rng2 Is Nothing Then
        Set rng2 = c
            Else
        Set rng2 = Application.Union(rng2, c)
      End If
  End If
Next
rng2.Offset(1, 0).Select

Application.DisplayAlerts = False

    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
   
Application.DisplayAlerts = True
Selection = Selection.Offset(-1, 0).Value
Set rng2 = Nothing
Next
ramme
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Sub ramme()

    Range("B36:BB36").Select

    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

End Sub
Avatar billede olesendan Nybegynder
10. januar 2010 - 15:45 #28
Hej Excelent.

Dette er helt perfekt.

Jeg har indsat to linjer til at låse arket op samt beskytte det igen, også fra dig.

Takker mange gange.

smid et svar så du kan få point

VH Dan
Avatar billede excelent Ekspert
10. januar 2010 - 21:53 #29
ok velbekom
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