22. december 2009 - 12:55Der er
6 kommentarer og 1 løsning
Makro som sammen kører data fra 3 filer. = 200 point
Hej, jeg her 3 ens regneark (fil 1, fil 2 fil 3) De 3 regneark er 100 % ens i opbygningen, men er forbeholdt 3 forskælige forratningsgange, de intastet oplysninger er der for ikke ens.
I hver fil er der et ark som heder "kunder" der indtastes kunder i kolonne A. og oplysningerne anventes til en drop down liste i filen.
Nu til spørgsmålet: Jeg ønsker at de 3 filer har samme kunder indtastet, dvs. hvis der i "fil 2" indtastes en ny kunde så skal den automatisk også opdateres i "fil 1" og "fil 3" Men kunden skal kun stå der en gang (vigtigt!) Opdateringen skal være automatisk og ikke noget med en knap.
Er det muligt vil jeg også gerne ha kunderne soteret i alfabetisk orden.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Rem Version 1 - VBA koden anbringes under arket "kunder" Rem ==================================================== Dim filTabel As Variant, antalRækker As Long, filSti As String
Const ID = "fil 1.xls"
Dim xFil As Object Private Sub Worksheet_Change(ByVal Target As Range) Dim kundenavn As String On Error GoTo gåVidere
If Target.Column = 1 And Target.Text <> "" And LCase(ActiveWorkbook.Name) = ID Then antalRækker = findAntalRækker() kundenavn = Target.Value
If findesKunde(kundenavn, antalRækker) > 0 And Target.Row < antalRækker - 1 Then Rows(Target.Row).Select Selection.Delete Else sorter antalRækker ActiveSheet.Columns.AutoFit
opdater2Andre antalRækker MsgBox ("Opdatering af kunder udført") End If End If Exit Sub
gåVidere: ' Stop End Sub Private Function findSti() findSti = ActiveWorkbook.Path If Right(findSti, 1) <> "\" Then findSti = findSti + "\" End If End Function Private Function findAntalRækker() With ActiveSheet findAntalRækker = ActiveCell.SpecialCells(xlLastCell).Row End With End Function Private Function findesKunde(kundenavn, sidsterække) With ActiveSheet.Range("A1:A" & CStr(sidsterække)) Set c = .Find(kundenavn, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then findesKunde = c.Row Else findesKunde = 0 End If End With End Function Private Sub sorter(sidsterække) ActiveSheet.Range("A1:A" & CStr(sidsterække)).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal End Sub Private Sub opdater2Andre(sidsterække) Dim f As Byte filSti = findSti
ActiveSheet.Range("A:A").Select Selection.Copy
For f = 0 To UBound(filTabel) If ActiveWorkbook.Name <> filTabel(f) Then Set xFil = CreateObject("Excel.Application") With xFil .Workbooks.Open filSti + filTabel(f) opdaterKunder sidsterække End With End If Next f
Application.CutCopyMode = False Range("A1").Select End Sub Private Sub opdaterKunder(sidsterække) With xFil .Sheets("kunder").Activate .Range("A1").Select
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.