Avatar billede besida Nybegynder
07. september 2007 - 18:55 Der er 17 kommentarer og
1 løsning

Makro til visning af data

Jeg har en regnskabsmodel, hvor jeg med hjælp herfra har fået lavet en makro, der låser cellerne der er indtastet i. dvs. man kan ikk gå tilbage og ændre noget.

Nu er jeg nåede dertil hvor outputtet skal komme til visning i et særskilt ark. Men resultatet og opsummeringen skal først være synlig, såfremt man har trykket på en knap, der har låst alle de indtastede celler... er dette muligt???
Hvis der så bliver ændret i nogle af cellerne i de andre ark igen, skal dataene/outputtet ikke være synligt, medmindre man igen trykker på knappen, og låser de celler der er udfyldte.
Avatar billede jlemming Nybegynder
07. september 2007 - 21:32 #1
Er det et helt ark du vil skjule, eller kun et område?
hvis det er et område, kan du f.eks ændre skriftfarve til hvid

Range("E9:H19").Select
    With Selection.Font
        .ColorIndex = 2
    End With


Det glæder mig at du fik det andet til at virker. :-)
Avatar billede jlemming Nybegynder
07. september 2007 - 22:00 #2
For at tjekke om der er indtastet noget kan du bruge denne kode, men du bliver nok nød til at have en knap de skal trykke på inden.

du kan også lave en knap som tjekker om data er ændret, og giver en fejlmeddelse. Jeg tror ikke du kan gøre det dynamisk, så dine resultater bliver skjult, men det samme de indtaster en værdi.

kode for tjek af nye værdier og skrift hvid:

    Dim aendret As Boolean
   
    aendret = False
    Range("A1:D8").Select
    For Each c In Selection
      If c.Locked = False Then  ' tjek om er låst i forvejen
        If c <> "" Then        ' indtastet værdi
          c.Locked = True
          aendret = True
        End If
      End If
    Next
    If aendret = True Then  ' hvis ændringer skrift = hvid
      Range("E9:H19").Select
      With Selection.Font
          .ColorIndex = 2
      End With
    End If
Avatar billede jlemming Nybegynder
07. september 2007 - 22:05 #3
Og hvis det er et helt ark kan du skjule det på følgende måde:

Sheets("Ark3").Visible = false
Avatar billede besida Nybegynder
08. september 2007 - 16:08 #4
ja, det var sq lækkert.. det virker perfekt:)

Altså, jeg har 12 ark i alt. januar til december.
Dvs. hvis man har indtastet noget i december, så skal man have trykket på knappen der låser det indtastede data..

Men hvis man så har glemt dette på hvert enkelt ark, så skal man kunne låse alle arkene, eller der hvor der er udfyldt, på uddata arket. og når man så har trykket på denne, så skal man have adgang til at kunne se outputtet.?

Men den kan sagtens virke hvis man ændre skriftsfarven til hvid, og så til sort når man har trykket på knappen. Men hvis der så er ændret noget i de andre ark, så skal skriftsfarven blive hvid igen:)
Avatar billede jlemming Nybegynder
09. september 2007 - 08:03 #5
Jeg skal lige være helt med :-). Når der skal ændres noget, efter man har låst alle arkene, skal arkene så låses op?, så man kan rette de gamle værdier, eller må man kun indtastes nye værdier (i ulåst celler)?
Avatar billede besida Nybegynder
09. september 2007 - 22:05 #6
Det skal kun være muligt at indtaste i celler der ikke er udfyldte:)

SÅ når man har tastet i januar arket, og låst det, ved at trykke på knappen, som du hjalp mig med i det første spørgsmål, så skal det være muligt at se uddata, eller outputtet i et andet ark.. Hvis man så indtaster nye data, i nogle af de celler som ikke er udfyldte, så skal man ikke kunne se outputtet med mindre man har trykket på knappen:)

Men det skal også være muligt at trykke på en knap i uddata arket, således at alle indtastede data bliver låst, og outputtet så kommer frem??

hehe, er jeg utydelig i min forklaring??
Avatar billede jlemming Nybegynder
10. september 2007 - 09:36 #7
Nej, du er ikke utydelig, jeg skulle bare være sikker inden jeg kastede mig ud i større løsningsforslag. her kommer det.

Du skal selvfølglig ændre til dine koder og områder

Du skal huske at når du begynder på et helt nyt ark, at cellerne skal være ulåste.

I hver ark skal du følgende til at stå (vælg ark i højre side af VBA editor)

Private Sub Worksheet_Change(ByVal Target As Range)
     
  If Not Intersect(Target, Range("A1:AA65536")) Is Nothing Then
    NyIndtastning
  End If
End Sub

På dit outputark (i princippet ligegyldigt) kan du lægge følgende kode:
Private Sub NyIndtastning()
  Dim aendret As Boolean
  Dim sheetnavn As String
   
    aendret = False
    Range("A10:c14").Select
    ActiveSheet.Unprotect "kode"
    sheetnavn = ActiveSheet.Name
    For Each c In Selection
      If c.Locked = False Then  ' tjek om cele er låst i forvejen
        If c <> "" Then        ' indtastet værdi
          c.Locked = True
          aendret = True
        End If
      End If
    Next
    If aendret = True Then          ' hvis ændringer skrift = hvid
      Sheets("ark3").Select        ' her skal ark navn til output stå
      ActiveSheet.Unprotect "kode"
      ActiveSheet.Range("a15:c20").Select  'område der ønskes hvid
      With Selection.Font
          .ColorIndex = 2
      End With
    End If
    ActiveSheet.Protect "kode"
    Sheets(sheetnavn).Select

End Sub
Avatar billede jlemming Nybegynder
10. september 2007 - 09:54 #8
Det skal lige nævnes at rutinen kaldes hvergang der bliver noget indtastet, så du skal lægge følgende linier ind

Application.ScreenUpdating = False

Application.ScreenUpdating = True
Avatar billede jlemming Nybegynder
10. september 2007 - 10:13 #9
Det kan da gøres meget lettere, vi behøver ikke at tjekke cellen længere, dem der er låst kan der jo ikke indtastes i!.



Private Sub NyIndtastning()
    Dim sheetnavn As String
   
    Application.ScreenUpdating = False
    sheetnavn = ActiveSheet.Name
    Sheets("ark3").Select        ' her skal ark navn til output stå
    ActiveSheet.Unprotect "kode"
    ActiveSheet.Range("a15:c20").Select  'område der ønskes hvid
    With Selection.Font
      .ColorIndex = 2
    End With
    ActiveSheet.Protect "kode"
    Sheets(sheetnavn).Select
    Application.ScreenUpdating = True

End Sub
Avatar billede besida Nybegynder
10. september 2007 - 10:43 #10
ok.. tak:) jeg er lidt usikker på hvilken af løsningerne jeg skal bruge nu??? er det den sidste, 10/09-2007 10:13:50, eller??

Det med at jeg skal indsætte application.screenupdating ... hvor skal det gøres, til hvert ark?? eller??
Avatar billede jlemming Nybegynder
10. september 2007 - 11:31 #11
Du skal bruge følgende:

I hver ark skal du følgende til at stå (vælg ark i højre side af VBA editor)

Private Sub Worksheet_Change(ByVal Target As Range)
     
  If Not Intersect(Target, Range("A1:AA65536")) Is Nothing Then
    NyIndtastning
  End If                            ' vælg kun det område som gyldig for indtastning
End Sub

På dit outputark (i princippet ligegyldigt) skal du lægge følgende kode:
Private Sub NyIndtastning()
    Dim sheetnavn As String
   
    Application.ScreenUpdating = False
    sheetnavn = ActiveSheet.Name
    Sheets("ark3").Select        ' her skal ark navn til output stå
    ActiveSheet.Unprotect "kode"
    ActiveSheet.Range("a15:c20").Select  'område der ønskes hvid
    With Selection.Font
      .ColorIndex = 2
    End With
    ActiveSheet.Protect "kode"
    Sheets(sheetnavn).Select
    Application.ScreenUpdating = True

End Sub
Avatar billede besida Nybegynder
11. september 2007 - 08:52 #12
Hej... nu har jeg prøvet at sætte makroerne ind..  men de modspiller den første kode, som låste de udfyldte celler?

Jeg får fejl når jeg prøver at bruge den der blot låser de udfyldte celler.
Avatar billede jlemming Nybegynder
11. september 2007 - 09:17 #13
Hvilken fejl får du?, har du husket at ændre kodeordet.
Du kan evt mail den til mig, så skal jeg kigge det

jacob.lemming(sa)honeywell.com
Avatar billede jlemming Nybegynder
13. september 2007 - 08:12 #14
Du kan også ligge din kode herind, så jeg kan kigge på, vi skal da have det til at virke!
Avatar billede besida Nybegynder
14. september 2007 - 14:42 #15
Hej jlemming.. undskyld det sene svar, jeg har virkelig haft travlt på arbejde...

Jeg prøver at sende den til dig i aften:)

Tusinde tak for hjælpen.
Avatar billede besida Nybegynder
17. september 2007 - 13:38 #16
Så har jeg endelig haft tid til at kigge på det.. det ser simpelthen bar så godt ud.. Det var lige det jeg var ude efter;)

Mange tusinde tak for hjælpen, både i dette spørgsmål og det første:)
Avatar billede besida Nybegynder
17. september 2007 - 13:38 #17
how, send du bar et svar:)
Avatar billede jlemming Nybegynder
17. september 2007 - 13:40 #18
Velbekomme :-)
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