Avatar billede chrped Nybegynder
06. januar 2012 - 15:52 Der 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.

PFT
Avatar billede store-morten Ekspert
06. januar 2012 - 17:09 #1
Eks. hvis der tastes et X i celle A1 skjules række 15
Hvis X´et i celle A1 slettes vises række 15

Private Sub Worksheet_Change(ByVal Target As Range)

    If Range("A1") = "x" Then
        Rows("15").EntireRow.Hidden = True
    Else
        Rows("15").EntireRow.Hidden = False
End If

End Sub


Kopier koden -->
Højreklik på Ark fanen og vælg "Vis programkode"
Tryk ctrl+v -->
Luk på det røde kryds.
Test
Avatar billede chrped Nybegynder
06. januar 2012 - 17:39 #2
Hvis der tastes X i en celle skal den vise rækken
Hvis der intet står skal den skjule rækken

Derudover skal man løbende kunne tilføje og fjerne X'er, hvor den så også skjuler og viser rækkerne

Jeg kan ikke finde "Vis programkode" under fanen Ark.
Bruger 2011 udgaven til Mac.
Avatar billede store-morten Ekspert
06. januar 2012 - 17:59 #3
http://gupl.dk/671445/
http://gupl.dk/671446/

#2  ???
Hvis der tastes X i en celle skal den vise rækken
Hvordan vil du taste x i en række der er skjult?
Avatar billede store-morten Ekspert
06. januar 2012 - 18:05 #4
Hvis det var forkert opfattet af mig ;-)

Så byt om på True/False
Således at False står øverst og True nederst.
Avatar billede chrped Nybegynder
06. januar 2012 - 18:17 #5
Ovenstående virker ikke - kan ikke se eller vælge noget "vis programkode" :(
Hvordan kan jeg gøre det med Office 2011 på Mac - ved du det ?
Avatar billede store-morten Ekspert
06. januar 2012 - 18:21 #6
Prøv at trykke: alt+f11
Nej, har ikke kendskab til Mac ;-(
Avatar billede chrped Nybegynder
06. januar 2012 - 19:50 #7
Har fundet ud af at komme ind i makro, men når jeg taster ovenstående makro ind og trykker afspil, så sker det intet :(

Derudover - kan du hjælpe mig med at lave en knap ?

Og vil gerne have at den opdaterer uden jeg selv skal gøre noget - enten når der sker ændringer eller hvert f.eks. 30 sek.
Avatar billede chrped Nybegynder
06. januar 2012 - 19:59 #8
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).

Og så gerne opdateres automatisk :)
Avatar billede chrped Nybegynder
06. januar 2012 - 20:02 #9
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 ?
Avatar billede store-morten Ekspert
06. januar 2012 - 21:58 #10
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

End If
End Sub
Avatar billede chrped Nybegynder
06. januar 2012 - 22:28 #11
OK.

Hvordan skal det skrives/gøres hvis:

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
Avatar billede store-morten Ekspert
06. januar 2012 - 22:35 #12
Nu bliver du krævende ;-)

Kikker på det.
Avatar billede chrped Nybegynder
08. januar 2012 - 17:01 #13
Var jeg for krævende eller har du en løsning til mig :)
Avatar billede chrped Nybegynder
11. januar 2012 - 16:27 #14
Hej,

Kunne du hjælpe - begynder at blive lidt presset på tiden nemlig :)
Avatar billede store-morten Ekspert
11. januar 2012 - 16:37 #15
Jeg er i gang ;-)
Har været optaget, af en datter, der har været omkring "Riget"

Er det rigtigt forstået at:
C5 til I5 med X'et (uafhængigt af hinanden) skal rækkerne skjules/vises gælder for følgende rækker 38-57  ?

Problem: C5 = x skjules rækker 38-57, men hvis I5 = "" vises rækker 38-57 igen.

Hjælpe kolonne J. I celle J5: formlen =ELLER(C5="x";D5="x";E5="x";F5="x";G5="x";H5="x";I5="x")
Avatar billede chrped Nybegynder
11. januar 2012 - 17:05 #16
Helt ok - håber det går bedre med din datter!

Hvis man taster et X i C5 (i ark1) skal række 38 vises (i ark3) - og hvis der ikke er noget X i celle C5 skal række 38 skjules.

Hvis man taster et X i C6 (i ark1) skal række 39 vises (i ark3) - og hvis der ikke er noget X i celle C6 skal række 39 skjules.


Hvis man taster et X i D6 (i ark1) skal række 59 vises (i ark3) - og hvis der ikke er noget X i celle D6 skal række 59 skjules.

Osv...
Avatar billede store-morten Ekspert
11. januar 2012 - 17:25 #17
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.
Avatar billede chrped Nybegynder
11. januar 2012 - 18:44 #18
OK, MEN KAN DU FINDE DEN ANDEN LØSNING TIL MIG? :)
Avatar billede store-morten Ekspert
11. januar 2012 - 19:05 #19
Prøv at teste denne:
Sub test()

On Error GoTo ErrorHandle

Application.ScreenUpdating = False

        Dim rCell As Range
        Dim rRange As Range
     
        Set rRange = Range("C5:I24")
       
        For Each rCell In rRange
   
        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

End Sub
Avatar billede chrped Nybegynder
11. januar 2012 - 19:36 #20
Ser vildt ud :)

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 :)
Avatar billede store-morten Ekspert
11. januar 2012 - 20:04 #21
For at virke korrekt skal:
Set rRange = Range("C5:I24")
rettes til:
Set rRange = Range("C5:I25")

Og så må der ikke skrives "x" i celler C24:I25

Så opgaven til 30P er vist løst ;-)
Avatar billede chrped Nybegynder
11. januar 2012 - 21:10 #22
Det virker sku ikke :(

Der sker ingenting - måske er det mig som ikke ved hvor/hvordan det skal skrives - har skevet det i VBA men under hvilket ark ?

Kan også se at ovenstående ikke dækker de nye områder jeg skrev tidligere.
Avatar billede chrped Nybegynder
11. januar 2012 - 21:13 #23
Vil det være nemmere hvis jeg sendt dig filen - eller er det ikke kutyme ?!
Avatar billede store-morten Ekspert
11. januar 2012 - 21:17 #24
adresse under profil.
eller Upload her:
http://gratisupload.dk/
Hvis det ikke indeholder hemmelige data ;-)
Avatar billede chrped Nybegynder
11. januar 2012 - 22:06 #25
Har sendt dig en mail :)
Avatar billede store-morten Ekspert
11. januar 2012 - 22:43 #26
Så Ark1 P E L behøver ikke at styre Vis/skjul på Ark3?
Men Ark3 kolonne D. Vis kun udfyldte.
Avatar billede chrped Nybegynder
11. januar 2012 - 23:50 #27
Det lyder rigtigt :)
Avatar billede store-morten Ekspert
11. januar 2012 - 23:56 #28
Sendt retur.
Så må vi se om det dur ;-)
Avatar billede store-morten Ekspert
17. januar 2012 - 22:59 #29
Tak for point

Løsning:
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"
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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