07. juli 2008 - 11:12Der er
2 kommentarer og 1 løsning
Indsættelse af celler fra en fane til et anden i excel
Jeg skal have lidt excel hjælp. Jeg skal taste et investeringsnummer, en tekst, by og etage i et ark. Derefter skal jeg kune trykke på en knap og kopiere dette over i en anden fane. I fane nummer to skal den så indsætte de 2 første celler(investeringsnummer og en tekst) under den by og den etage som er blevet tastet ind. Den skal altså indsætte en ny række under byen og etagen og kopiere formlerne fra den række ovenfor og indsætte investeringsnummer i kolonne b og og teksten i kolonne c
MsgBox ("Opdatering udført") End Sub Private Sub definerArk() With ActiveWorkbook Set ark1 = .Sheets("Ark1") Set arkIndtast = .Sheets("Indtast") Set ark2 = .Sheets("Ark2") End With End Sub Private Sub hentIndtastedeData() invNr = Range("B3").Value tekst = Range("C3").Value By = Range("D3").Value Etage = CStr(Range("E3").Value) End Sub Private Sub findByEtagePåArk1() Const startRæk = 6 Dim slutRæk ark1.Activate
Rem traverser på Ark1 slutRæk = ActiveCell.SpecialCells(xlLastCell).Row For r = startRæk To slutRæk If LCase(Trim(ark1.Cells(r, 2))) = LCase(By) Then findEtageArk1 r, slutRæk Exit Sub End If Next r MsgBox (By & " er ikke fundet på Ark1") End Sub Private Sub findEtageArk1(startRæk, slutRæk) Dim tekst, fedSkrift For r = startRæk + 1 To slutRæk tekst = ark1.Cells(r, 3) fedSkrift = ark1.Cells(r, 3).Font.Bold If InStr(tekst, Etage) = 1 And fedSkrift = True Then findIndsættelsesRækkeArk1 r + 1, slutRæk Exit Sub End If Next r MsgBox (Etage & ". etage ikke fundet på Ark1") End Sub Private Sub findIndsættelsesRækkeArk1(startRække, slutRække) Dim tekst, fedSkrift Rem Skal finde Ny etage eller slutningen af Tabellen For r = startRække To slutRække tekst = ark1.Cells(r, 3) fedSkrift = ark1.Cells(r, 3).Font.Bold If fedSkrift = True Then Rem Næste etage er fundet IndsætNyrækkeArk1 r Exit Sub Else Rem Test om slutningen af tabel er nået If testKolonneBLtomArk1(r) = True Then IndsætNyrækkeArk1 r Exit Sub End If End If Next r MsgBox ("Ny række ikke fundet på Ark1") End Sub Private Function testKolonneBLtomArk1(række) testKolonneBLtomArk1 = True
For Each cc In ark1.Range("B" & CStr(række) & ":L" & CStr(række)).Cells If cc.Value <> "" Then testKolonneBLtomArk1 = False Exit Function End If Next End Function Private Sub IndsætNyrækkeArk1(foranRække) foranTekstArk1 = ark1.Cells(foranRække, 3)
Rem Indsæt ny række på Ark2 inden af hensyn til formler ******** findByEtagePåArk2
kopierFormlerFormat foranRække - 1, foranRække Rem kopier formler fra række ovenfor
Rem Indsæt Inv.Nr & tekst i den nye række ark1.Cells(foranRække, 2) = invNr ark1.Cells(foranRække, 3) = tekst End Sub Private Sub kopierFormlerFormat(fraRæk, tilRæk) Rem Overfør formler fra kolonnerne B - L udførKopiering "B", fraRæk, tilRæk udførKopiering "C", fraRæk, tilRæk udførKopiering "D", fraRæk, tilRæk udførKopiering "E", fraRæk, tilRæk udførKopiering "F", fraRæk, tilRæk udførKopiering "G", fraRæk, tilRæk udførKopiering "H", fraRæk, tilRæk udførKopiering "I", fraRæk, tilRæk udførKopiering "J", fraRæk, tilRæk udførKopiering "K", fraRæk, tilRæk udførKopiering "L", fraRæk, tilRæk End Sub Private Sub udførKopiering(kolonne, fraRæk, tilRæk) Dim bagFarve ark1.Activate
With ark1 Rem Kopier formel, hvis den findes i rækken ovenfor If .Range(kolonne & CStr(fraRæk)).HasFormula = True Then .Range(kolonne & CStr(fraRæk) & ":" & kolonne & CStr(tilRæk)).FillDown End If
Rem Kopier formatering fra rækken ovenfor .Cells(fraRæk, kolonne).Select bagFarve = Selection.Interior.ColorIndex Selection.Copy .Cells(tilRæk, kolonne).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Selection.Interior.ColorIndex = bagFarve End With End Sub Rem ************** ARK2 ******************** Private Sub findByEtagePåArk2() Const startRæk = 4 Dim slutRæk ark2.Activate
Rem traverser på Ark2 slutRæk = ActiveCell.SpecialCells(xlLastCell).Row For r = startRæk To slutRæk If InStr(LCase(Trim(ark2.Cells(r, 1))), LCase(By)) > 0 Then findEtageArk2 r, slutRæk Exit Sub End If Next r MsgBox (By & " er ikke fundet på Ark2") End Sub Private Sub findEtageArk2(startRæk, slutRæk) Dim tekst, fedSkrift For r = startRæk + 1 To slutRæk tekst = ark2.Cells(r, 2) fedSkrift = ark2.Cells(r, 2).Font.Bold If InStr(tekst, Etage) = 1 And fedSkrift = True Then findIndsættelsesRækkeArk2 r + 1, slutRæk Exit Sub End If Next r MsgBox (Etage & ". etage ikke fundet på Ark2") End Sub Private Sub findIndsættelsesRækkeArk2(startRække, slutRække) Dim tekst, fedSkrift Rem Skal finde Ny etage eller slutningen af Tabellen For r = startRække To slutRække tekst = ark2.Cells(r, 2) If tekst = foranTekstArk1 Then Rem Næste etage er fundet IndsætNyrækkeArk2 r Exit Sub Else Rem Test om slutningen af tabel er nået If testKolonneBLtomArk2(r) = True Then IndsætNyrækkeArk2 r End If End If Next r MsgBox ("Ny række ikke fundet på Ark2") End Sub Private Function testKolonneBLtomArk2(række) testKolonneBLtomArk2 = True
For Each cc In ark2.Range("A" & CStr(række) & ":C" & CStr(række)).Cells If cc.Value <> "" Then testKolonneBLtomArk2 = False Exit Function End If Next End Function Private Sub IndsætNyrækkeArk2(foranRække) ark2.Rows(CStr(foranRække) & ":" & CStr(foranRække)).Select Selection.Insert Shift:=xlDown
Rem Indsæt Inv.Nr & tekst i den nye række ark2.Cells(foranRække, 1) = invNr ark2.Cells(foranRække, 2) = tekst End Sub
Synes godt om
Ny brugerNybegynder
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.