Avatar billede mpjc Nybegynder
29. juli 2008 - 19:31 Der er 13 kommentarer og
1 løsning

Hvis eller skjul række på baggrund af betingelse

Hej

Jeg har lavet et lille regnark, som indeholder diverse formler.

I toppen af arket er der en formel, som fortæller brugeren om arket er ok til forsendelse.

Jeg kunne dog godt tænke mig, at den knap (makro), som muliggør afsendelse til mig, først kommer frem når arket er ok.

Er der nogen som har en ide til en makro, som viser/skjuler de to-tre rækker (hvor makro senderen er), på baggrund af HVIS formlen.
Avatar billede excelent Ekspert
29. juli 2008 - 21:07 #1
Kan du ikke bare vise/skjule knappen ?

Indsæt denne makro i arkets kodemodul
Koden køres hver gang markør skifter celle

Går ud fra du kun har en knap, eller udskift 1 med navn på knap i koden

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [A1] = "ok" Then ActiveSheet.Shapes(1).Visible = True
If [A1] <> "ok" Then ActiveSheet.Shapes(1).Visible = False
End Sub
Avatar billede mpjc Nybegynder
30. juli 2008 - 08:31 #2
Umiddelbart lyder det som en mulighed, jeg tester i aften.
Avatar billede mpjc Nybegynder
30. juli 2008 - 17:27 #3
Til Ecelent!

Nu har jeg kigget lidt på det.

Den vil ikke rigtig skjule sig ;-)

Koden til min knap er flg.
-----
Sub Knap58_Klik()
ActiveWorkbook.SendMail Recipients:="mail@domæne.org", Subject:="XXX"

End Sub
----
Men spørgsmålet er som om koden skal ind i ovenstående kode eller for sig selv.

Ligeledes skal din kode kontrollere om ex.vis. v5 er = 19 eller ej.

Håber du kan hjælpe.
Avatar billede excelent Ekspert
30. juli 2008 - 18:01 #4
prøv denne (i arkets kodemodul)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [V5] = 19 Then ActiveSheet.Shapes("Knap58").Visible = True
If [V5] <> 19 Then ActiveSheet.Shapes("Knap58").Visible = False
End Sub
Avatar billede mpjc Nybegynder
30. juli 2008 - 19:16 #5
Endnu engang tak for dit svar.

Nu sker der i hvertfald noget.

Men den melder flg. fejl:
Run-Time Error - 2147024809

Og hvis jeg trykker debug, markere den flg. linie:

If [X30] <> 19 Then ActiveSheet.Shapes("Knap58").Visible = False
Avatar billede excelent Ekspert
30. juli 2008 - 20:07 #6
Test lige navnet på knappen :

hvis det er en formular så højreklik på den og se navn i navneboks
(lige over kolonnebogstav A)
hvis det er en kontrol element så skal du lige have den i editmode
først
Avatar billede mpjc Nybegynder
30. juli 2008 - 20:11 #7
Det er et kontrol element...

Kan ikke lige umiddelbart se editmode nogen steder!

Er det bare det VBA program?
Avatar billede excelent Ekspert
30. juli 2008 - 20:27 #8
højreklik på menulinien - vælg Kontrolelement
klik på trekant linial
så kan du selecte knappen uden at den kører koden
Avatar billede mpjc Nybegynder
30. juli 2008 - 20:27 #9
Nu virker det lidt...

Nogen gange forsvinder knappen, hvis betingelsen er opfyldt, men ikke altid!!

Koden ser sådan ud:


Private Sub Send_Click()
If [X30] = 19 Then ActiveSheet.Shapes("Send").Visible = True
If [X30] <> 19 Then ActiveSheet.Shapes("Send").Visible = False
ActiveWorkbook.SendMail Recipients:="@@@", Subject:="@@@"
End Sub

Og er indtastet i selve arkets kode.
Avatar billede excelent Ekspert
30. juli 2008 - 20:31 #10
koden som viser/skjuler knappen køre hver gang cellemarkør skifter celle

ved ikke om der er andre måder at aktivere den på
det er afhængig af hvordan dit system virker

Hvad får celle X3 til at skifte værdi ?
Avatar billede mpjc Nybegynder
30. juli 2008 - 20:37 #11
"Systemet" er bygget sådan op hvis der fx. er indtastet i feltet Adresse, tester en HVIS kode (=HVIS(D13<>0;1;0)) og returnere et svar.

Så er der lavet en sum formel (X30), som summere alle HVIS cellerne.

Og det er hvis denne er 19 skal knappen vises, og ellers skjules.
Avatar billede excelent Ekspert
30. juli 2008 - 20:46 #12
kan se du har sat koden ind i Private Sub Send_Click()
det virker ikke

højreklik på arkfane hvor knap er og vælg Vis Programkode
indsæt denne kode der

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [X30] = 19 Then ActiveSheet.Shapes("Send").Visible = True
If [X30] <> 19 Then ActiveSheet.Shapes("Send").Visible = False
End Sub
Avatar billede mpjc Nybegynder
30. juli 2008 - 20:49 #13
Så virker det....

Tusinde tak for hjælpen.

Giv et svar!
Avatar billede excelent Ekspert
30. juli 2008 - 20:55 #14
Som sagt køres koden ved celleskift
Denne kører kun hvis du ændrer i A1
Skift A1 i koden ud med den celle du indtaster i

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If [X30] = 19 Then ActiveSheet.Shapes("Send").Visible = True
If [X30] <> 19 Then ActiveSheet.Shapes("Send").Visible = False
End Sub
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