Avatar billede Greenseeker Praktikant
21. december 2006 - 18:26 Der er 29 kommentarer og
1 løsning

Funktion af kommandoknap

Hej!

Det kan være det bliver lidt kompliceret at forklare, men here goes:

I et ark, der fungerer som regnskab for spil på internettet, har jeg oprettet 5 rækker (rk. 10-14), hvor man i kolonnerne C-L indtaster data for de enkelte aktive spil. Hver af de 5 rækker er ét spil. Dvs. når man har et spil i gang, der ikke er afgjort skriver man det ind i den øverst ledige af de 5 rækker. Når spillet så er afgjort, indtaster man resultatet ("Win" eller "Loss") i kolonne K.

OK. Nedenunder de 5 rækker for aktive spil har jeg oprettet 500 rækker for afgjorte/tidligere spil, startende fra rk. 25. Samme kolonner som ovenfor.

En kommandoknap (kontrolelement) skal fungere på følgende måde: Når knappen aktiveres, skal de rækker hvor kolonne K er udfyldt (altså afgjorte spil), flyttes/kopieres fra de 5 rækker til den nedenstående liste, på øverst ledige plads. Samtidig skal de slettes fra "Aktive spil"-rækkerne, så der er plads til nye spil.

Håber det giver lidt mening. Ellers kan jeg godt sende mit ark...!?
Avatar billede excelent Ekspert
21. december 2006 - 19:01 #1
Sub Flyt()
For t = 10 To 14
x = Cells(525, 11).End(xlUp).Row + 1
If x < 25 Then x = 25
If Cells(t, 11) <> "" Then
Range("C" & t & ":L" & t).Cut Range("C" & x)
End If
Next
End Sub
Avatar billede excelent Ekspert
21. december 2006 - 19:32 #2
fik læat det som at afgjorte spil skal flyttes til nederste ledige række
men det var vist øverste ledige række eller hvad?
Avatar billede excelent Ekspert
21. december 2006 - 19:36 #3
i så fald skal den se sådan ud

Sub Makro1()
For t = 10 To 14
x = Cells(25, 11).End(xlDown).Row - 1
If x > 525 Then x = 525
If Cells(t, 11) <> "" Then
Range("C" & t & ":L" & t).Cut Range("C" & x)
End If
Next
End Sub
Avatar billede Greenseeker Praktikant
21. december 2006 - 20:20 #4
Hej excelent - Igen! :o)

Ja, det er øverst ledige række.

Hmm... Kan ikke få det til at virke. Jeg har indsat ovenstående i programkoden for kommandoknappen, og afsluttet designtilstanden. Er det rigtigt? Som sagt skal den kun flytte rækken ned, hvis der er indtastet noget i rækkens K-celle.
Avatar billede excelent Ekspert
21. december 2006 - 20:31 #5
den virker ok her

send evt. til pm@madsen.tdcadsl.dk
Avatar billede Greenseeker Praktikant
21. december 2006 - 20:32 #6
ok, sender arket...
Avatar billede excelent Ekspert
21. december 2006 - 20:45 #7
ok har ændret lidt i koden, så den ikke ændrer på dit format
nederste linie sættes i række 525
ret i 4 linie i koden hvis det skal være en anden

Private Sub CommandButton1_Click()
For t = 10 To 14
x = Cells(25, 11).End(xlDown).Row - 1
If x > 525 Then x = 525 ' ret 525 begge steder hvis...
If Cells(t, 11) <> "" Then
Range("C" & t & ":L" & t).Copy Range("C" & x)
Range("C" & t & ":L" & t).ClearContents
End If
Next
End Sub
Avatar billede Greenseeker Praktikant
21. december 2006 - 20:50 #8
Ja, nu flytter den rækken. Meeen den flytter den til den nederst ledige række i stedet for den øverst ledige række...!
Avatar billede Greenseeker Praktikant
21. december 2006 - 20:53 #9
Desuden flytter den cellernes formatering med. Det er ikke så godt... :o/
Avatar billede excelent Ekspert
21. december 2006 - 20:54 #10
ok måske jeg misforstod dig

hvis række 25 til række 525 alle er tomme, hvor skal første spil så indsættes?
Avatar billede excelent Ekspert
21. december 2006 - 20:54 #11
ja jeg har set det med formatering - kikker på det også
Avatar billede Greenseeker Praktikant
21. december 2006 - 20:58 #12
Første afgjorte spil skal til række 25, andet til 26 osv. Men faktisk tænkte jeg på, om ikke man kan gøre et eller andet, så man arrangerer de afgjorte spil i række 25-525 efter dato, altså med den laveste datoværdi øverst...? Så vil det jo være ligemeget hvor den indsætter rækken, hvis de alligevel bagefter bliver sorteret efter dato...
Avatar billede excelent Ekspert
21. december 2006 - 21:07 #13
ok så skulle den virke - kikker lige på sortering

Private Sub CommandButton1_Click()
For t = 10 To 14
x = Cells(525, 11).End(xlUp).Row + 1
If x < 25 Then x = 25
If Cells(t, 11) <> "" Then
y = Range("C" & t & ":L" & t).Value
Range("C" & x & ":L" & x) = y
Range("C" & t & ":L" & t).ClearContents
End If
Next
End Sub
Avatar billede Greenseeker Praktikant
21. december 2006 - 21:11 #14
Fint. Det ville jo også være fint, hvis der blev sorteret i de 5 øverste rækker. F.eks. hvis man har 3 aktive spil, og det andet bliver afgjort. Så vil de to spil der er tilbage stå i første og tredje række... Bare lidt kosmetik... :o)
Avatar billede excelent Ekspert
21. december 2006 - 21:20 #15
Private Sub CommandButton1_Click()
For t = 10 To 14
x = Cells(525, 11).End(xlUp).Row + 1
If x < 25 Then x = 25
If Cells(t, 11) <> "" Then
y = Range("C" & t & ":L" & t).Value
Range("C" & x & ":L" & x) = y
Range("C" & t & ":L" & t).ClearContents
End If
Next
x = Cells(525, 11).End(xlUp).Row
Range("C25:L" & x).Select
Selection.Sort Key1:=Range("C25"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C10:L14").Select
Selection.Sort Key1:=Range("C10"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C10").Select
End Sub
Avatar billede Greenseeker Praktikant
21. december 2006 - 21:23 #16
Det er supernice! :o) Et sidste lille problem...: Når den rykker den tredje række op (Active bets) efter at den anden er fjernet, tager den formateringen med igen... :o/
Avatar billede excelent Ekspert
21. december 2006 - 21:29 #17
ok kikker på det
Avatar billede excelent Ekspert
21. december 2006 - 21:55 #18
prøv:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
For t = 10 To 14
x = Cells(525, 11).End(xlUp).Row + 1
If x < 25 Then x = 25
If Cells(t, 11) <> "" Then
y = Range("C" & t & ":L" & t).Value
Range("C" & x & ":L" & x) = y
Range("C" & t & ":L" & t).ClearContents
End If
Next
x = Cells(525, 11).End(xlUp).Row
Range("C25:L" & x).Select
Selection.Sort Key1:=Range("C25"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Range("C10:L14").Select
Selection.Sort Key1:=Range("C10"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C10").Select

For t = 10 To 14 Step 2
Range("C" & t & ":L" & t).Interior.ColorIndex = 24
Range("C" & t + 1 & ":L" & t + 1).Interior.ColorIndex = xlNone
Next

For t = 25 To 524 Step 2
Range("C" & t & ":L" & t).Interior.ColorIndex = 24
Range("C" & t + 1 & ":L" & t + 1).Interior.ColorIndex = xlNone
Next
Application.ScreenUpdating = True
End Sub
Avatar billede Greenseeker Praktikant
21. december 2006 - 22:00 #19
Yes, næsten perfekt! Nu lader det til, at formatet for visningen af datoen i række 25-525 er låst...! Den er ikke den samme som de 5 øverste rækker, og jeg kan ikke ændre den....!?
Avatar billede excelent Ekspert
21. december 2006 - 22:03 #20
nej den har fra starten været i størrelse 10 i 25 til 525 mod 8 i 10-14

du skal nok lige formatere kolonne C i de 2 områder til datoformat og skriftstr. 8
Avatar billede Greenseeker Praktikant
21. december 2006 - 22:09 #21
Nej, det er ikke det. De fem øverste rækker viser dato (Dansk) 26.11.06, og nedenunder viser de 26/11/2006, og jeg kan ikke ændre det...?
Avatar billede excelent Ekspert
21. december 2006 - 22:12 #22
jeg sender lige arket retur, det virker ok her
Avatar billede Greenseeker Praktikant
21. december 2006 - 22:13 #23
Hmm. Faktisk er der én ting til. De 5 øverste rækker: Data i kolonne L udregnes via en formel, der er afhængig af hvad der indtastes i kolonne K. Når Rækken flyttes slettes denne formel også. Kan man gøre noget ved det?
Avatar billede excelent Ekspert
21. december 2006 - 22:15 #24
hvordan ser formel ud ?
Avatar billede Greenseeker Praktikant
21. december 2006 - 22:18 #25
For L10 ser den sådan ud: =HVIS(K10="";"";HVIS(K10="Loss";0;HVIS(K10="Void";J10;J10*H10)))

Med hensyn til datoen, gør den det samme med det du lige har sendt mig. Ved ikke lige hvordan det kan lade sig gøre...
Avatar billede excelent Ekspert
21. december 2006 - 22:23 #26
har du lavet brugerformateret dato i C 10 til 14
i såfald skal formatering være sådan i C25 til 525 også  ?
Avatar billede Greenseeker Praktikant
21. december 2006 - 22:25 #27
Brugerformateret? Ja, jeg har været inde og ændre formatet til Dansk 14.3.01, og jeg ville gerne have dette format i begge lister, altså faktisk hele kolonne C.
Avatar billede excelent Ekspert
21. december 2006 - 22:57 #28
indsæt disse linier under 7 nederste linie lige under hvor der står Next

Range("L10").Formula = "=if(K10="""","""",if(K10=""Loss"",0,if(K10=""Void"",J10,J10*H10)))"
Range("L11").Formula = "=if(K11="""","""",if(K11=""Loss"",0,if(K11=""Void"",J11,J10*H11)))"
Range("L12").Formula = "=if(K12="""","""",if(K12=""Loss"",0,if(K12=""Void"",J12,J10*H12)))"
Range("L13").Formula = "=if(K13="""","""",if(K13=""Loss"",0,if(K13=""Void"",J13,J10*H13)))"
Range("L14").Formula = "=if(K14="""","""",if(K14=""Loss"",0,if(K14=""Void"",J14,J10*H14)))"
Avatar billede Greenseeker Praktikant
21. december 2006 - 23:03 #29
Tak for det, excelent! Det er helt perfekt! Så tror jeg der er styr på det hele... :o) Hvis ikke du har en løsning på datoformateringen, går det nok. Jeg har ikke lavet et brugerdefineret datoformat, hvis det var det du mente? Det er et af standardformaterne...

Smid et svar for point!
Avatar billede excelent Ekspert
21. december 2006 - 23:10 #30
ok jeg ville nok formatere kolonne C med følgende format dd-mm-åå
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