06. januar 2012 - 15:52Der er
28 kommentarer og 1 løsning
Oprettelse af Makro + Knap + afspilning
Hej,
Håber virkelig i kan hjælpe mig! Jeg har nu læst flere af de gode svar der har været inden på siden, men desværre ikke fundet den helt rigtige løsning - så håber i har tid og lyst til at hjælpe :)
Jeg har lavet et ark som i øjeblikket kan følgende: Når et lokale skal bruges, indsættes et X i feltet, og så genereres der automatisk en tekst ind længere nede. Herved er det kun når de givne rum som dukker op længere nede, som jeg så kan arbejde videre med. Problemet er bare, at for at ovenstående kan lade sig gøre, så er der en linje til hver givent rum - og derved også en masse tomme pladser hvis de ikke bliver brugt.
Derfor har jeg brug for en makro (går jeg ud fra) der kan følgende: - skjule alle de tomme rækker som ikke bruges - hvis et rum pludselig skal bruges og feltet bliver udfyldt med et X, så skal dette også komme op længere nede - samme måde som ovenfor; hvis et rum ikke alligevel skal bruges, skal det forsvinde længere nede
Da jeg aldrig har prøvet at lave en makro har jeg brug for en trinvis gennemgang - også af hvordan jeg efterfølgende får oprettet en knap og hvordan jeg indstiller denne makro til at afspille.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Nu virker ovenstående fint. Jeg vil dog meget gerne have den udvidet, så den f.eks. dækker over:
Hvis jeg sætter X i et eller flere af felterne indenfor A1:A15, så vil felterne henholdsvis A16:A31 være skjulte hvis der ikke er et X eller blive vist, hvis der er et X i feltet.
Dette skal gentages i sammen makro med mange forskellige (B, C, D osv).
Hvordan er det, hvis der hvor jeg sætter X'erne er i f.eks. ark 1 mens der hvor den skal fjerne linjer er i ark 3 - skal det så ændres i Makroen eller hvad gør jeg ?
Makro køres kun ved ændring i område A1:D15 på det Ark koden sættes ind på. Og skjuler/viser rækker på Ark3.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:D15"), Target) Is Nothing Then
For Row = 1 To 15 If Range("A" & Row) = "x" Then Worksheets(3).Range("A" & Row).Offset(15, 0).Rows.EntireRow.Hidden = True Else Worksheets(3).Range("A" & Row).Offset(15, 0).Rows.EntireRow.Hidden = False End If Next
Man i det ark (ark1) hvor ændringerne sker, kan udfylde felterne C5 til I24 med X'et (uafhængigt af hinanden).
Og man i det ark (ark3) hvor rækkerne skal skjules/vises gælder for følgende rækker 38-57 + 59-78 osv (altså 20 rækker ad gangen med en tom blivende række og derefter 20 rækker igen efterfulgt af en tom blivende række igen - ialt 20 rækker gange 7).
C5 hører sammen med række 38, C6 hører sammen med række 39 osv
Shit.... Har lige fået det til at virke modsat ;-) Så: et eller flere "x" i C5:I5 så skjules 38 til 57 et eller flere "x" i C6:I6 så skjules 59 til 78 Dog skjules 61 og ned hvis resten er tomme :-(
Jo tak, vel overstået operation, og hjemme igen på rekreation.
spring = (rCell.Column - 2) * 20 række = rCell.Row + 13 + spring
If rCell = "x" Then
Worksheets(3).Rows(række).EntireRow.Hidden = True Else Worksheets(3).Rows(række).EntireRow.Hidden = False End If Next
BeforeExit: Application.ScreenUpdating = True
Exit Sub 'Her havner vi ved programfejl ErrorHandle: MsgBox "Der opstod en fejl, makro afsluttes!!! " & vbCrLf & _ Err.Description Resume BeforeExit 'Dirigerer tilbage til BeforeExit
Eftersom jeg ikke er god til makroer og har ændret lidt i arket - altså placeringer. Kan jeg give dig de nye info og kan du så lave ovenstående om, så jeg blot kan smide den ind :)
Der hvor der kan afkrydses er fra D14-AM69
Man kan nu sætte følgende tegn: P L E (hvorved linjerne skal vises)
D14 "hænger sammen med" række 4 D15 "hænger sammen med" række 5 osv D14-D69 "hænger sammen med" rækkerne 4-59
Derefter er der en række tom inden det begynder igen med
E14 "hænger sammen med" række 61 E15 "hænger sammen med" række 62 osv E14-E69 "hænger sammen med" rækkerne 61-116
Det hele skulle meget gerne køre automatisk - gerne hvert 20-30 sek :)
Private Sub Worksheet_Activate() Sheets("Ark3").Range("A16").AutoFilter Sheets("Ark3").Range("$A$16:$H$2000").AutoFilter Field:=4, Criteria1:="<>" End Sub
Private Sub Worksheet_Deactivate() Sheets("Ark3").Range("A16").AutoFilter Sheets("Ark3").Range("A:H").AutoFilter Field:=4 End Sub
Når Ark1 aktiveres/forlades sættes filter på Ark3 til: vis alt eller vis alt, minus "tomme"
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.