29. juli 2008 - 12:30Der er
3 kommentarer og 1 løsning
Automatisk ændring af tal i én kolonne
Jeg ønsker mulighed for at kunne prioritere forskellige opgaver i et større regneark med ordrenumre. (PT er der ca. 1300 rækker, som vil stige) Jeg ønsker at kunne prioritere med tallene 1 - 20, og på en måde så: Ved fx ny prioritet 6, ændres prioriterne 7 - 20 med +1. Samtidigt skal prioritet 1 slettes, når der markeres i en celle på samme række, og samtidigt skal 2 blive til 1 3 til 2 osv. Jeg ønsker at denne "samme" kode kan stå i alle celler i kolonen, så det kun bliver nødvendigt at lave manuel prioriteringer 1. gang. Herefter håber jeg på et system der løbende automatisk altid har prioriteringen 1-20 synlig for alle. Rækkerne er inddelt med ca 20 for hver uge, de 20 prioriteringer vil ca dække 3 uger altså ca 60 rækker. Rækker før vil være produceret (har været 1. prioritet) Rækkerne efter er endnu ikke prioriteret
Dim flag As Boolean, ptPrio Private Sub Worksheet_Activate() flag = False End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim nyPrio, nyPrioRæk On Error GoTo goon
If Not Intersect(Target, Range("K:K")) Is Nothing Then Rem Hvis x sættes i Kolonne K/11 & prioritet i denne række = 1 (kolonne C/3), så ophæv 1. prio & omnummerer If Target.Column = 11 And Target.Value = "x" And Target.Offset(0, -8) = 1 Then flag = True ophævPrio1 Target.Row flag = False End If Else If Not Intersect(Target, Range("C:C")) Is Nothing And flag = False Then Rem ny numerisk værdi indtastes i kolonne C If Target.Value <> "" And IsNumeric(Target.Value) = True And flx = False Then Rem Hvis prioritetsNr ændres flag = True nyPrio = Target.Value nyPrioRæk = Target.Row ændringAfPrio nyPrio, nyPrioRæk flag = False End If flag = False End If End If Exit Sub
goon: End Sub Private Sub ophævPrio1(prio1Række) Dim ræk, startRæk Rem fjern 1. prioritet og omnummerer (tæl een ned) indtil tom celle i kolonne A Cells(prio1Række, 3) = ""
startRæk = findStartRække(prio1Række)
If startRæk > 0 Then For ræk = startRæk + 1 To 65000 If Cells(ræk, 3) <> "" And IsNumeric(Cells(ræk, 3)) = True Then Cells(ræk, 3) = Cells(ræk, 3) - 1 Else If Cells(ræk, 1) = "" Then Exit Sub End If End If Next ræk Else MsgBox ("Fejl nedlæg 1. prio. - startrække for prioriteter kunne ikke findes") End If End Sub Private Sub ændringAfPrio(xVærdi, xRække) Dim ræk, startRæk, startværdi startRæk = findStartRække(xRække) startværdi = ptværdi
If startRæk > 0 Then For ræk = startRæk + 1 To 65000 If Cells(ræk, 3) <> "" And IsNumeric(Cells(ræk, 3)) = True Then If ræk <> xRække And Cells(ræk, 3) >= xVærdi Then Cells(ræk, 3) = Cells(ræk, 3) + 1 End If Else If Cells(ræk, 1) = "" Then Exit Sub End If End If Next ræk Else MsgBox ("Fejl omnummerering - startrække for prioriteter kunne ikke findes") End If End Sub Private Function findStartRække(xRæk) Dim ræk Rem Find hvor prioriteterne begynder (led efter tom celle i kolonne A) For ræk = xRæk To 1 Step -1 If Cells(ræk, 1) = "" Then findStartRække = ræk Exit Function End If Next ræk findStartRække = 0 End Function
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.