21. august 2005 - 12:54Der er
19 kommentarer og 3 løsninger
opskrive en talrække ud fra hvilke tal der mangler fra 1-9
Hvis man fra b5-j5 har 9 felter hvor der i nogle af felterne er et tal fra 1-9, hvordan kan man så få regnearket til at opskrive de tal fra 1-9 der mangler i rækken og hvert tal må kun fremkomme en gang, tallene (som mangler) skal foreksempel skrives op i celle n5-v5 (hvis der mangler 9 tal skal den foreksempel skrive 1 2 3 4 5 6 7 8 9 (hvert tal i hver sin celle fra n5-v5) kan det lade sig gøre????
Mangler = 0 For i = 1 To 9 Fundet = False For Each c In Range("B5:J5") If i = c Then If Fundet Then MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl" Else Fundet = True End If End If Next c If Not Fundet Then Mangler = Mangler + 1 Cells(5, 13 + Mangler).Value = i End If Next
For j = 5 To 6 Mangler = 0 For i = 1 To 9 Fundet = False For Each c In Range("B" & j & ":J" & j) If i = c Then If Fundet Then MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl" Else Fundet = True End If End If Next c If Not Fundet Then Mangler = Mangler + 1 Cells(j, 13 + Mangler).Value = i End If Next i Next j
og hvad hvis man gerne vil have den til at fungere lodret altså fra b5:b13 og skrive de manglende tal op fra b17:b25 og så fortsætte til den kolonne C??
Du finder da også hele tiden på noget nyt! Jeg kan godt lave funktionen automatisk - så behøver du ikke knappen. Du skal blot lige ændre funktionen til
Sub test19()
Range("N5:V6").Clear For j = 5 To 6 Mangler = 0 For i = 1 To 9 Fundet = False For Each c In Range("B" & j & ":J" & j) If i = c Then If Fundet Then MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl" Cells(j, 13 + Mangler) = "Dobbeltindtastning" Else Fundet = True End If End If Next c If Not Fundet Then Mangler = Mangler + 1 Cells(j, 13 + Mangler).Value = i End If Next i Next j
End Sub
Derefter højreklikker du på fanebladet på regnearket, hvor du skriver dine tal. Vælg "Vis programkode" og i det vindue, der dukker frem skriver du følgende
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Row = 5 Or Target.Row = 6 Then If Target.Column >= 2 And Target.Column <= 10 Then test19 End If End If
jeg syntes ikke den virker automatisk, og jeg vil gerne have den til at virke fra b5 og fortsætte til række b13, og hvad med at få den til at fungere lodret? ja ja jeg ved godt men jeg kan jo ikke selv finde ud af det. og jeg ved godt det er meget at forlange men du er jo mesteren.
Den lodrette var lige smuttet. Det må kunne klares med denne her:
Sub Test19Lodret()
Range("B17:C25").Clear For j = 2 To 3 Mangler = 0 For i = 1 To 9 Fundet = False For Each c In Range(Cells(5, j), Cells(13, j)) If i = c Then If Fundet Then MsgBox "Dobbeltindtastning (" & i & ")", vbCritical + vbOKOnly, "Fejl" Mangler = Mangler + 1 Cells(16 + Mangler, j) = "Dobbeltindtastning (" & i & ")" Else Fundet = True End If End If Next c If Not Fundet Then Mangler = Mangler + 1 Cells(16 + Mangler, j).Value = i End If Next i Next j
Er det meningen at den skal gøre det for række 1 - 2 og kolonne B - C (som du har beskrevet ovenfor) eller skal det gøres for alle rækker (5 - 13) og alle kolonner (B - J)?
I virkeligheden er en del af rettelserne ret enkle:
Sub Test19Vandret() Range("N5:V13").ClearContents For j = 5 To 13
N5:V13 er det område hvor de manglende tal skrives (her stod tidligere "N5:V6"). Koden gennemløber række for række tallene i række 5 til 13 (her stod tidligere 5 til 6).
Sub Test19Lodret() Range("B17:J25").ClearContents For j = 2 To 10
B17:J25 er det område hvor de manglende tal skrives (her stod tidligere "B17:C25"). Koden gennemløber kolonne for kolonne tallene i kolonne 2 (dvs. B) til 10 (dvs. J) (her stod tidligere 2 til 3).
Herudover er der så ændret i "Worksheet_Change" sub'en som beskrevet ovenfor - den er faktisk blevet mere enkel.
tusinde tak for hjælpen jeg giver dig hermed dine fortjente points tak tak tak
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.