Avatar billede lizardine Nybegynder
11. april 2005 - 20:26 Der er 6 kommentarer og
1 løsning

Sammenflettede celler i excel ark

Hej

Jeg har en funktion der løber igennem et excel ark og læser alle celler. Det jeg godt kunne tænke mig var at finde ud af om to cellerækker er flettet med hinanden.

Den kode jeg har nu, tjekker om en celle er part af celler der er flettede, men ikke hvilke celler.

Set aObjExcel = CreateObject("Excel.Application")
aObjExcel.Workbooks.Open "Book1.xls"

With aObjExcel.ActiveWorkbook
    For Each aObjWorkSheet In .Worksheets
          With aObjWorkSheet
              aLngColCount = .UsedRange.Columns.Count
              aLngRowCount = .UsedRange.Rows.Count
 
              For aLngRow = 1 To aLngRowCount
                    For aLngCol = 1 To aLngColCount
                        'Tjek af cellerække
                        If .Cells.Range(.Cells(aLngRow - 1, aLngCol).Address, .Cells(aLngRow, aLngCol).Address).MergeCells = True Then
                        ....

Håber at der er nogen der kan hjælpe.
Avatar billede bak Forsker
11. april 2005 - 21:14 #1
ActiveCell.MergeArea.Address giver dig adressen på hele det mergede område, dvs hvis A3, A4 og A5 er merged og du står i A3 giver den dig A3:A5


Dim MCells as range

If .Cells.Range(.Cells(aLngRow - 1, aLngCol).Address, .Cells(aLngRow, aLngCol).Address).MergeCells = True Then
Set MCells =.Cells.Range(.Cells(aLngRow - 1, aLngCol).Address, .Cells(aLngRow, aLngCol).Address).MergeArea

msgbox MCells.Address
Avatar billede lizardine Nybegynder
11. april 2005 - 21:45 #2
Det vil sige, at hvis jeg står i A4, vil den retunere A4:A5?

Hvis det er tilfældet, så er jeg lidt på den. Fordi det jeg skal vide er om cellen over mig er part af den fletning jeg befinder mig i.

Eksempel.

A1, A2, A3 er flettet sammen.
A4, A5, A6 er flettet sammen.

Jeg står i celle A4 og jeg vil gerne vide om ovenstående celle, A3, er part af den sammenfletning.

Er det mig der misforstår dit forslag eller ?
Avatar billede bak Forsker
11. april 2005 - 22:10 #3
set C = Range("A4")
If Not Intersect(c.MergeArea, c.Offset(-1, 0)) Is Nothing Then
  'så er de flettet sammen
else
  'så er de ikke
end if


Sub test()
Dim c As Range
For Each c In Selection.Cells
  If Not Intersect(c.MergeArea, c.Offset(-1, 0)) Is Nothing Then
      MsgBox "Intersect between " & c.MergeArea.Address & "  and  " & _
        c.Offset(-1, 0).Address & "  (Undersøger nu " & c.Address & " )"
      Else
      MsgBox "No Intersect between " & c.MergeArea.Address & "  and  " & c.Offset(-1, 0).Address
  End If
Next
End Sub
Avatar billede bak Forsker
11. april 2005 - 22:13 #4
Hov, glemte da at forklare mig.
Nej, du er ikke på den. Du skal bare chekke om der er Intersection mellem aktuel celle/område og cellen overfor.
Det gør jeg i ovenstående eksempel. Bemærk at du ikke kan starte i række 1 da der ikke er nogen overover.
Avatar billede lizardine Nybegynder
11. april 2005 - 22:25 #5
Kanon fedt mand. Tusind tak for hjælpen :-)

Gider du at lægge et svar?
Avatar billede bak Forsker
11. april 2005 - 22:31 #6
Ja da, godt det kunne bruges :-)
Avatar billede lizardine Nybegynder
11. april 2005 - 22:35 #7
Tak :-)
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
Kurser inden for grundlæggende programmering

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