Avatar billede Klaus123 Mester
10. december 2012 - 08:04 Der er 10 kommentarer og
1 løsning

Tjekke om nr i liste findes

Hej

Jeg har nedenstående VBA kode hvor jeg laver en kopi af et ark og omdøber det til variablen Nr. Jeg vil gerne have koden til at tjekke om der allerede er omrettet et ark med det nr og i så fald arket er omrettet skal der komme en msg boks hvor der står at arket er oprettet. Hvis det kan lade sig gøre, vil jeg så gerne have at man i msg boksen kan skrive et alternativt nr.

Jeg har lavet en dynamisk liste med alle arknumre som et navn med navnet ListeNr.

Private Sub CommandButton2_Click()
OpretBukkeliste.Hide

Dim rCell As Range

Set rCell = FindNextTomme(Range("A19"))
rCell.Value = Nr

Set rCell = FindNextTomme(Range("B19"))
rCell.Value = BukkelistensNavn

Set rCell = FindNextTomme(Range("C19"))
rCell.Value = Udarbejdet

Set rCell = FindNextTomme(Range("E19"))
rCell.Value = Leverandør

Set rCell = FindNextTomme(Range("F19"))
rCell.Value = LeverandørensOrdremodtager


Sheets("Indtastning").Copy After:=Worksheets(Worksheets.Count)
Sheets("Indtastning (2)").Name = Nr

MsgBox "Bukkeliste oprettet"

Set rCell = Nothing

End Sub
Avatar billede Thorp Praktikant
10. december 2012 - 08:31 #1
prøv evt. denne løsning

for each sh in sheets
IF sh.name = Nr then INPUTBOX Nr & " er allerede valgt" & chr(10) & "Indtast et andet nr."
NEXT
Avatar billede Klaus123 Mester
10. december 2012 - 09:10 #2
Jeg kan ikke få det til at virke, hvor skal jeg placere det henne.
Avatar billede Klaus123 Mester
10. december 2012 - 09:26 #3
Nu ser koden således ud. Jeg mangler vist bare at omdefinere Nr når jeg taster det ind i inputboxen

Private Sub CommandButton2_Click()
OpretBukkeliste.Hide

Dim rCell As Range

For Each sh In Sheets
If sh.Name = Nr Then InputBox Nr & " er allerede valgt" & Chr(10) & "Indtast et andet nr."
Next

Set rCell = FindNextTomme(Range("A19"))
rCell.Value = Nr

Set rCell = FindNextTomme(Range("B19"))
rCell.Value = BukkelistensNavn

Set rCell = FindNextTomme(Range("C19"))
rCell.Value = Udarbejdet

Set rCell = FindNextTomme(Range("E19"))
rCell.Value = Leverandør

Set rCell = FindNextTomme(Range("F19"))
rCell.Value = LeverandørensOrdremodtager

    Sheets("Indtastning").Copy After:=Worksheets(Worksheets.Count)
    Sheets("Indtastning (2)").Name = Nr

MsgBox "Bukkeliste oprettet"

Set rCell = Nothing

End Sub
Avatar billede Thorp Praktikant
10. december 2012 - 10:44 #4
Jeg ville nok indsætte den efter du har defineret Nr.

Hvis for-each-next løkken finder et match så skal du anvende outputtet til at sætte Nr = output. dette kan gøres således:

If sh.Name = nr Then nr = InputBox(nr & " er allerede valgt" & Chr(10) & "Indtast et andet nr.")
Avatar billede Klaus123 Mester
10. december 2012 - 10:59 #5
Nu er den tæt på at være der. Mangler bare at koden tjekker om det nye indtastede nr er med i listen så man ikke kommer til at vælge et nr der allerede er med i listen.

Private Sub CommandButton2_Click()
OpretBukkeliste.Hide

Dim rCell As Range

Set rCell = FindNextTomme(Range("B19"))
rCell.Value = BukkelistensNavn

Set rCell = FindNextTomme(Range("C19"))
rCell.Value = Udarbejdet

Set rCell = FindNextTomme(Range("E19"))
rCell.Value = Leverandør

Set rCell = FindNextTomme(Range("F19"))
rCell.Value = LeverandørensOrdremodtager

For Each sh In Sheets
If sh.Name = Nr Then Nr = InputBox(Nr & " er allerede valgt" & Chr(10) & "Indtast et andet nr.")
Next


Set rCell = FindNextTomme(Range("A19"))
rCell.Value = Nr





    Sheets("Indtastning").Copy After:=Worksheets(Worksheets.Count)
    Sheets("Indtastning (2)").Name = Nr


MsgBox "Bukkeliste oprettet"
Avatar billede Thorp Praktikant
10. december 2012 - 11:09 #6
er der ikke en 1:1 relation mellem Listen og Ark?
Avatar billede Klaus123 Mester
10. december 2012 - 11:22 #7
Jeg ved ikke lige hvad du mener med en 1:1 relation. Hvis du mener at nr og arknavn er det samme så er der en 1:1 relation. Numrene på Nr og arknavn står i tilfældig rækkefølge og kommer fra en Userform
Avatar billede Klaus123 Mester
10. december 2012 - 11:24 #8
Kan man fx køre lykken igen forfra hvis der trykkes OK
Avatar billede Klaus123 Mester
10. december 2012 - 13:43 #9
Jeg fandt en løsning

For i = 1 To 2
For Each sh In Sheets
If sh.Name = Nr Then i = i - 1
If sh.Name = Nr Then Nr = InputBox(Nr & " er allerede valgt" & Chr(10) & "Indtast et andet nr.")
Next
i = i
Next

Tak for hjælper
Sender du et svar
Avatar billede Thorp Praktikant
10. december 2012 - 14:11 #10
For Each .... Next gennemløber samtlige Ark i workbooken, derfor burde den finde Nr såfremt den allerede er oprettet.

Betingelsen If sh.Name = Nr udløses kun såfremt der allerede findes et Ark med Navnet Nr og der bedes om et nyt navn.

For at kontrollere om det nye Nr allerede er på listen kunne du eks. sammenligne værdien med Arkene igen.

En god måde ville være, at lægge arkene i en Matrix.

Dim i As Integer
Dim shn() As String, sh As Variant
Dim nr_exists As Boolean

ReDim Preserve shn(Sheets.Count - 1)

i = 0
nr_exists = False


For i = 0 To Sheets.Count - 1
    shn(i) = Sheets(i + 1).Name
    i = i + 1
Next


For Each sh In Sheets
    If sh.Name = Nr Then
        Nr = InputBox(Nr & " er allerede valgt" & Chr(10) & "Indtast et andet nr.")

        i = 0
        For i = 0 To Sheets.Count - 1
            If Nr = shn(i) Then nr_exists = True
        Next
   
    If nr_exists Then Nr = InputBox(Nr & " er allerede valgt" & Chr(10) & "Indtast et andet nr.")
   
    End If
   
Next
Avatar billede Thorp Praktikant
10. december 2012 - 14:13 #11
det var så lidt:-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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