Avatar billede richardski Praktikant
18. februar 2009 - 22:03 Der er 32 kommentarer og
1 løsning

Afslut uden gem m.v.

Jeg har flere ting jeg gerne vil have en løsning på, men ved ikke om jeg kan have dem alle i et enkelt indlæg eller om jeg skal oprette et indlæg for hvert spørgsmål. Da der netop er flere spørgsmål giver jeg maximum point og håber dette kan få eksperterne til at hjælpe :-)

1. Excel spørger om jeg vil gemme arket når jeg lukker det ned. Kan man slippe for dette? Arkets funktioner ændre sig ikke og resultaterne som indtastes skal ikke gemmes!

2. musemarkøren i mit ark vil jeg også gerne af med, kan den  evt. skjules?

3. Kan man lave blinkende celler i Excel. Feks hvis jeg står i celle A:10 kan man så få denne celle til at blinke eller rammen som omgiver den aktive celle til at blinke... evt. i en bestemt farve?

4. Kan man definere en taste f.eks. lighedstegnet "=" til ved et enkelt tryk at udskrive nogle felter/kolonne f.eks. H:9 til H:40 plus J:9 til J:40? Arket har en mørk baggrund hvilket ikke skal skrives med ud.

På forhånd tak!
Avatar billede tg4600 Nybegynder
18. februar 2009 - 22:52 #1
Jeg vil nøjes med at svare på den første ;-)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Saved = True
End Sub

Skulle klare den...  /Tommy
Avatar billede jkrons Professor
19. februar 2009 - 12:07 #2
Til nummer 2: JA, du kan få markøren til at forsvinde, men kun via Windows API, og det betyder at den forsvinder overalt. Så det er vigtigt, at du får den slået til igen, når regnearket lukkes eller hvad du nu gør.

I begyndelsen af et mdoul har du

Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

og du kan så lave top producerer

Sub SkjulCursor()
  ShowCursor 0
End Sub

Sub VisCursor()
  ShowCursor 1
End Sub


Til spørgsmål 3 er svaret nok Nej, men måske kan man lave noget med en timer. Jeg er bare ikke helt sikker på, at man kan få sat timeren i gang ved at stå i en celle. Måske med Worksheet_Selectionchange() hændelsen.

Til spørgsmål 4 kan det måske lade sig gøre med OnKey hændelsen, men til gengæld kan den pågældende tast så ikke bruges til sit oprindelige formål.
Avatar billede richardski Praktikant
19. februar 2009 - 22:21 #3
tg4600
Jeg får følgende fejl på din code!

Compile error:
ambiguous name detected: workbook_beforeclose

--

jkrons
spørgsmål 2 og 3 er ikke så vigtige i første omgang, men den onkey funktion i mit spørgsmål 4 du foreslar vil jeg gerne høre mere om :-)
Avatar billede richardski Praktikant
19. februar 2009 - 22:25 #4
tg4600

jeg fandt fejlen ;-) der er point til dig når jkrons har meldt tilbage!
Avatar billede jkrons Professor
19. februar 2009 - 22:40 #5
I den mappe,. hvor funktionen skal findes, skal du åbne Visual Basic Editoren.

I ThisWorkbook modulet lægger du dene kode:

Private Sub Workbook_Open()
    Application.OnKey "{=}", "myprint"
End Sub

Jeg vil dog nok anbefale en anden tast en =, for så er det ikke længere muligt at lave formler :-). Måske kunne du i stedet bruge {INSERT} eller {HOME} eller lignende.

I et almindeligt modul lægger du så denne procedure:

Sub myprint()
    ActiveSheet.PageSetup.PrintArea = "$H$9:$H$40,$J$):$J$40"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

Du kan selvfølgelig omdøbe proceduren til at hedde noget andet end myprint, men så skal du huske at rette den begge steder.

Gem nu mappen, og åbn den igen. N u vil et tryk på den valgte tast, printe det øsnkede område. Men husk, at når dui printer to adskilte områder, kommer de ud på hvert sit stykke papir.
Avatar billede jkrons Professor
19. februar 2009 - 22:41 #6
Der skal naturligvis stå
"$H$9:$H$40,$J$9:$J$40"
Avatar billede richardski Praktikant
19. februar 2009 - 23:05 #7
I this workbook har jeg således nu:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{TAB}"
ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
Application.OnKey "{TAB}", "'" & ThisWorkbook.Name & "'!test"
Application.DisplayFullScreen = True
Application.OnKey "{=}", "myprint"
End Sub


Og i class modules modul 1 har jeg:
Sub myprint()
    ActiveSheet.PageSetup.PrintArea = "$H$9:$H$40,$J$9:$J$40"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub


Når jeg trykker på = skriver den blot tegnet = i den celle jeg står i?

Hvad har jeg gjort galt?
Avatar billede jkrons Professor
19. februar 2009 - 23:28 #8
Godt spørgsmål. Har du haft mappen lukket og åbnet igen?
Avatar billede jkrons Professor
19. februar 2009 - 23:31 #9
I øvrigt skal det ikek være i et Class Mosule, men i et helt almindeligt modul.

I samme modul kan du iøvrigt putte det her:

Sub Blink(cell As String)
  If Range(cell).Interior.ColorIndex = 6 Then
      Range(cell).Interior.ColorIndex = 0
  Else
      Range(cell).Interior.ColorIndex = 6
  End If
  Application.OnTime Now + 1 / 86400, "doagain"
End Sub
Sub DoAgain()
On Error Resume Next
  Blink "$B$10" 'Sheets("Ark1").CodeName & ".Worksheet_SelectionChange"
End Sub

og i kodemodulet for Ark1 det her:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$10" Then
      Blink "$B$10"
  Else
      Range("B10").Interior.ColorIndex = 0
  End If
End Sub

Så blinker B10 gult, når du klikker i den.
Avatar billede jkrons Professor
19. februar 2009 - 23:36 #10
Glem lige det sidste. Den bliver ved med at blinke, når du forlader cellen igen.
Avatar billede richardski Praktikant
20. februar 2009 - 00:02 #11
Nu har jeg fra class modulet flyttet

Sub myprint()
    ActiveSheet.PageSetup.PrintArea = "$H$9:$H$40,$J$9:$J$40"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

til et almindeligt modul men resultatet er det sammen... ingen print?

ja, printeren er tændt ;-)
Avatar billede jkrons Professor
20. februar 2009 - 10:27 #12
Og den skriver stadig lighedstegn? Kan du evt sende arket til jan snabela kronsell dot net?
Avatar billede richardski Praktikant
20. februar 2009 - 11:01 #13
Ja, har du modtaget min mail?
Avatar billede jkrons Professor
20. februar 2009 - 14:12 #14
Jeg har modtaget den, og jeg kan simpelthen ikke gennemskue, hvad der går galt, for hos mig virker det fint. Når jeg trykker på Skift+= udskrives de valgte områder. Prøv evt. at ændre lighedstegnet til noget andet, fx {INSERT} og se om det gør nogen forskel.

At få området ændret er ikke noget problem, og heller ikke at udskrive uden den sorte baggrund. Det kan gøres ved at ændre Myprint til

Sub myprint()
    ActiveSheet.PageSetup.BlackAndWhite = True
    ActiveSheet.PageSetup.PrintArea = "$b$3:$d$9,$h$9:$J$40"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

Husk dog, at de to områder stadig udskrives på hveert sit stykke papir, og det kan der desværre ikke gøres noget ved.
Avatar billede richardski Praktikant
20. februar 2009 - 14:48 #15
Jeg var ikke klar over at man skulle trykke shift ned også. Kan dette ikke omgåes. Jeg bruger arket alene ud fra et keypad som ikke har shift knap, så den vil jeg gerne slippe for?

Kan det ikke lade sig gøre at udskrive arket på et enkelt stykke papir i stedet for på 2. Hvad hvis man bruger mindre skrifttype så det hele kan stå samlet og kun fylde 1 enkelt ark papir?
Avatar billede jkrons Professor
20. februar 2009 - 16:08 #16
1) Du kan godt udskrive med en enkelt tast, men så skal det ikke være lighedstegnet. Vælg en anden tast, som du ellers ikke bruger.

2) Det har intet med skriftsstørrelsen at gøre. Når msn udskriver flere områder i et ark på samme tid, vil Excel altid udskrive hvert område på et papir for sig.
Avatar billede richardski Praktikant
20. februar 2009 - 17:37 #17
Jeg prøvede at vælge * tegnet og det virker ikke?

følgende taster er tlgængelige på mit keypad!
=()/*-+.
Avatar billede richardski Praktikant
20. februar 2009 - 17:40 #18
Workbook ser således ud:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{TAB}"
ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
Application.OnKey "{TAB}", "'" & ThisWorkbook.Name & "'!test"
Application.DisplayFullScreen = True
Application.OnKey "{*}", "myprint"
End Sub

og modulet ser således ud:

Sub myprint()
    ActiveSheet.PageSetup.BlackAndWhite = True
    ActiveSheet.PageSetup.PrintArea = "$b$3:$d$9,$h$9:$J$40"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

hvad er galt mht. udskrivningen?
Avatar billede jkrons Professor
21. februar 2009 - 11:35 #19
Jeg er bange for, at de taster, du har til rådighed på dit keypad, ligger uden for rammerne af de, som Excel kan bruge ved OnKey.

Hvis du går i Visual Basic editoren og vælger Help, kan du søge efter OnKey. Her kan du se, hvilke taster, der er mulige. Desværre er ingen af de taster, du omtaler, med på listen. Alle de tilladte taster dfindes på skrivemaskinedelen af et standardtastatur - eller blandt specialtasterne på dette.
Avatar billede richardski Praktikant
21. februar 2009 - 17:13 #20
ok, i deler point!

Hvis du lige smider et svar jkrons, så vender jeg tilbage!

Som et lille tillægsspørgsmål/ønske vil jeg høre om nogen kan være behjælpelig med en fortryd handling i en OnKey funktion så man blot ved et enkelt tryk kan fortryde sin sidste handling lige som ctrl+z gør det almindeligvis?
Avatar billede richardski Praktikant
21. februar 2009 - 18:21 #21
jeg har backspace til rådighed ;-)
Avatar billede jkrons Professor
21. februar 2009 - 18:24 #22
Har du prøvet med den? Hvis du har, og det ikke virker alligevel, skyldes det måske at dit keypad, sender en kode, som VBA ikke opfatter som Backspace men som noget andet.
Avatar billede richardski Praktikant
21. februar 2009 - 18:47 #23
nej, jeg har ikke prøvet med den da jeg jo ikke ved hvordan jeg skal lave den key til fortrydelse :-)
Avatar billede jkrons Professor
21. februar 2009 - 18:48 #24
Backspace hedder {BS}, men som du selv er inde på, kan den så ikke bruges til sit oprindelige formål.
Avatar billede richardski Praktikant
21. februar 2009 - 18:51 #25
det skal den heller ikke :-)
Har du koden så jeg lige kan prøve den af... og send den gerne som et svar så du kan få dine point :-)
Avatar billede richardski Praktikant
21. februar 2009 - 18:52 #26
den skal fungerer som "fortryd sidste handling" tast!
Avatar billede jkrons Professor
21. februar 2009 - 23:38 #27
Private Sub Workbook_Open()
  Application.OnKey "{BS}", "myprint"
End Sub

men hvis den skal fortryde sidste handling, kan den ikke bruges til print. Eller misgforstår jeg dig, så det er fortyd sidste handling, du cvil have en kode til? I s¨å fald skal koden i modulet se sådan ud

Sub FortrydSidste()
    Application.Undo
End Sub


og i ThisWorkbook

Private Sub Workbook_Open()
  Application.OnKey "{BS}", "FortrydSidste"
End Sub

men husk, at du kan fortryde handlinger, DU har udført. Handlinger udført af VBA makroer kan IKKE fortrydes.
Avatar billede richardski Praktikant
22. februar 2009 - 00:40 #28
Jeg takker mange gange for hjælpen! Tusinde tak ;-)
Avatar billede richardski Praktikant
22. februar 2009 - 10:17 #29
lige et tillægsspørgsmål til jkrons :-)

hvordan kan det være, at der rundt om det område som du har hjulpet mig med mht. udskriftområdet bliver striblede linier på skærmen og som jeg kun kan komme af med ved at lukke arket ned og starte det op igen ?

og hvordan kan det være at der fra indgange 18 og frem er celleramme med på udskriften og ikke på de første 17 ?
Avatar billede jkrons Professor
22. februar 2009 - 13:47 #30
Det første er simpelhen fordi udskriftsområderne vises. Du kan komme af med den ved at vælge Filer-Udskriftsområde-Ryd udskrioftsområde.

Det andet kan jeg desværre ikke umiddelbart svare på.
Avatar billede richardski Praktikant
22. februar 2009 - 13:58 #31
Filer-Udskriftsområde-Ryd udskrioftsområde kan jeg ikke finde i min Excel 2007 ?
Avatar billede jkrons Professor
22. februar 2009 - 17:36 #32
Min fejl. I 2007 saldu vælge fanen Sidelayout. Her vælger du komamndoen Udskriftsområde i gruppen Sideopsøætning og vælger Ryd udskriftsområde.
Avatar billede jkrons Professor
22. februar 2009 - 17:38 #33
Og undskyld stavefejl :-) Sådan går det, når man prøver at betjene en pc med hver hånd.
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