Forfatter |
Emne Søg Emne funktioner
|
Bjarne
Sølv bruger
Medlem: 17.Sep.2010
Land: Danmark
Status: Offline
Point: 300
|
Emne: Funktion eller? Sendt: 13.Jan.2017 kl. 12:31 |
Har nu rodet en hel del ude den store nytte. Har en Knapfunktion som henter en Macro.l Søger hjælp til følgende; Opgave 1 Har en Macro hvori jeg går til en bestemt Celle ("B6") i ark 2. I denne celle skal der ventes indtil et beløb er sat ind i cellen før systemet må køre videre. Opgave 2 Hvis cellen nu er blevet udfyldt, må der ikke senere kunne overskrives i cellen. Men der skal vendes tilbage i det Ark 1 og i en Celle ("A12") hvor Knapfunktionen kom fra. Kan nogen sætte mig på rette spor?
|
//Bjarne
|
|
|
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
|
Sendt: 13.Jan.2017 kl. 13:12 |
Der er flere ting, som skal holdes øje med, ud over om brugeren indtaster noget i cellen, bl.a. om brugeren aktivere et andet regneark, eller vælger en anden celle i regnearket, eller på anden måde forsøger, at lave noget andet, end ,at indtaste i cellen.
Så...
Umiddelbart ville jeg lave en 'Public' variabel (boolean), der signallere, hvorvidt vi er i 'tvungen indtastningsmode', og så styre det hele via 'Worksheets Events' (Worksheet_Change, Worksheet_SelectionChange, Worksheet_Deactivate, o.s.v.)
Hvis dette flag er sat, og der ingenting står i din celle, skal disse events vedblive at hoppe til cellen, og tvinge brugeren til at indtaste deri. Hvis flaget ikke er sat, så kan brugeren gøre som han plejer.
Når brugeren har indtastet i cellen, skal cellen låses, ved at regnearket låses, og event flaget stilles tilbage igen.
Hvilke events, der skal benyttes kommer lidt and på, hvor meget brugeren skal have lov til, uden, at der er tastet i cellen?
Må han f.eks. kunne gemme regnearket, uden indhold i cellen? Ellers skal du have gang i 'Workbook_BeforeSave' eventen.
Må han kunne udskrive - ellers så er det 'BeforePrint' eventen.
Det ved kun du, men med et 'Public' event flag har du fuld kontrol, og skal så blot bestemme, hvilke handlinger (events) som brugeren kan/må/skal foretage.
|
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
|
Sendt: 13.Jan.2017 kl. 13:14 |
Glemte lige, at skrive, at når brugeren så har indtastet i din celle, så kan systemet 'køre videre', ved at 'Worksheet_Change' eventen kalder den næste makro...
|
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|
Bjarne
Sølv bruger
Medlem: 17.Sep.2010
Land: Danmark
Status: Offline
Point: 300
|
Sendt: 13.Jan.2017 kl. 15:00 |
Der fik du godt nok ram på mig. Kan se at jeg bevæger mig ind på et minefelt. Fremmedsprog for mig. Har en bog: Visual Basic 6.0 fra 1998 som jeg kigger i. Jeg var så naiv at tro, når brugeren stod i cellen så skulle brugeren ikke kunne køre videre før der var sat et beløb ind. Når cellen er udfyldt hoppes der automatisk til en anden celle hvor dags dato indsættes. Men AK, så simpelt er det åbenbart ikke. (Savner mit gl. program I7 = Intregrated 7, samt Maskinkode program Hvor det var enkelt at udfører) Nå, men op på hesten igen eller opgive. Tak for dine svar. Mvh
|
//Bjarne
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
|
Sendt: 13.Jan.2017 kl. 15:11 |
Næh, næh, næh.... ...ikke opgaive Det kan skam osse blot være mig, der skyder over målet fordi, jeg ikke forstår dit problem korrekt Jeg forstod det blot sådan, at du ville kunne styre, hvor, hvornår og hvordan ting skete i et rengeark, når du kørte en makro, og hvornår makroen skulle forsætte... Hvis det alene drejer sig om, at få nogle tal lagt ind i nogle celler, undervejs i en makro, så er der en langt mere simpel metode: Du kan jo blot bede brugeren om at indtaste tallet i en 'InputBox', og så lægge det indtastede tal, fra 'InputBox' funktionen, ind i en celle.
|
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
|
Sendt: 13.Jan.2017 kl. 15:12 |
Og, husk: Visual Basic er LANGT FRA det samme som Visual Basic for Applications
|
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|
Bjarne
Sølv bruger
Medlem: 17.Sep.2010
Land: Danmark
Status: Offline
Point: 300
|
Sendt: 14.Jan.2017 kl. 10:25 |
Smukt -Tak Har lært en del mere. Og naturligvis har du ret igen. Det alene drejer sig om, at få nogle tal lagt ind i en celle, undervejs i en makro. Samtidig er der lidt af hvert af dine svar. Jeg vil nu gå i tænkeboks og forsøge at beskrive / besvare forløbet ud fra dine svar. På den måde kan jeg lære endnu mere.
|
//Bjarne
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
|
Sendt: 14.Jan.2017 kl. 10:48 |
Og naturligvis har du ret igen. |
Fortæl lige det til min kone
|
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|
Bjarne
Sølv bruger
Medlem: 17.Sep.2010
Land: Danmark
Status: Offline
Point: 300
|
Sendt: 18.Jan.2017 kl. 12:09 |
Tør ikke - du får aldrig fred! Alvor; Har arbejdet meget på InputBoxen. Går rimeligt fint Men, ja der er altid et men. Har oprettet en Inputbox i mit ark 'Kassekredit' I celle "H7" står allerede et beløb. Hvis man fortryder at indsætte et beløb trykkes der på knap "Cancel". virker helt fint- sådan da. Desværre sletter den beløbet som allerede stod der. OG DET MÅ DEN ABSELUT IKKE! den skal bare gå tilbage til det ark den kom fra. Hvordan kan jeg undgå at den sletter og hvordan sikre jeg at den går tilbage til det rigtige ark Er der slet ingen mulighed for at ændre i Inputboxens funktioner eller udseende? Håber du vil hjælpe en gl. mand
|
//Bjarne
|
|
Ib Hansen
Guld bruger
Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
|
Sendt: 18.Jan.2017 kl. 19:57 |
Hej Bjarne.
Sådan ville jeg gøre det, men der er sikkert en meget smartere måde at gøre det på. Normalt vil man fortælle at celle H7 skal være lig med værdien i TextBoxen. Det gøres med en VBA kode i selve TextBoxen.
Sheets(1).Range("H7").Value = Userform1.TextBox1.Value. Alt der skrives i TextBoxen, skrives samtidig i celle.
----------
Hvis den først skal skrive et beløb til cellen når du har accepteret det, kan du lave to Buttons i Userformen. - En Afslut Button. - En OK Button.
- Et klik på Afslut lukker bare Userformen med Unload me - Et klik på OK laver et Call til et Module med et Sub, hvor koden oven over står i.
På den måde kører den først koden, når OK Button aktiveres.
På de to Buttons i Userformen
Private Sub CommandButton1_Click()' OK Button Call Module1.Kassekredit Unload Me End Sub
Private Sub CommandButton2_Click() ' Afslut Button Unload Me End Sub |
I Modulet, Sub Kassekredit
Sub Kassekredit() Sheets(1).Range("H7").Value = UserForm1.TextBox1.Value End Sub |
Ib
|
Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
|
Sendt: 19.Jan.2017 kl. 08:08 |
Hvis du benytter 'InputBox', kan du blot teste for om brugeren trykker på [Annuller], med noget i denne stil:
Svar = InputBox() ' Et eller andet i InputBox her... If Svar = False Then ' Hop til ark her, uden at skrive noget i cellen... End If |
|
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|
Bjarne
Sølv bruger
Medlem: 17.Sep.2010
Land: Danmark
Status: Offline
Point: 300
|
Sendt: 19.Jan.2017 kl. 12:37 |
Tak for du bruger tid på mig. Har brugt flere dage på igen at arbejde / forsøge at finde ud af bygge en Userform. Uden held endnu. Derfor har jeg anvendt InputBox. Vil bruge din beskrivelse senere i nyt program jeg er i gang med. Kan se, at Excelgaard ("Det venlige væsen") har sendt et svar som jeg lige vil kigge på og prøve af. Skal finde udaf hvordan og hvor jeg skal sætte det ind, da jeg ikke kan se hvor jeg kan redigere inputboxen. Hvor finder jeg "indgangs nøglen" til Inputbox? Selve formlerne er ikke noget problem.
|
//Bjarne
|
|
Bjarne
Sølv bruger
Medlem: 17.Sep.2010
Land: Danmark
Status: Offline
Point: 300
|
Sendt: 19.Jan.2017 kl. 12:46 |
Hej EXCELGAARD), Skal finde udaf hvordan og hvor jeg skal sætte dine vise ord ind, da jeg ikke kan se hvor jeg kan redigere inputboxen. Hvor finder jeg "indgangs nøglen" til Inputbox? Eksempel hvor & hvordan ændre jeg i command butten "Cancel"? Selve formlerne tror jeg ikke bliver noget problem.
|
//Bjarne
|
|
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5419
|
Sendt: 19.Jan.2017 kl. 13:18 |
Ja, nu gør du mig noget forvirret??? Hvad mener du med 'indgangsnøgle' til 'Inputbox'??? Jeg vil anbefale dig, at benytte InputBox-metoden, i stedet for InputBox-funktionen. Du kan finde en vejledning her: https://msdn.microsoft.com/en-us/library/office/ff839468.aspx
|
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|
Bjarne
Sølv bruger
Medlem: 17.Sep.2010
Land: Danmark
Status: Offline
Point: 300
|
Sendt: 19.Jan.2017 kl. 13:44 |
Du skriver: Ja, nu gør du mig noget forvirret??? Så er vi 2! Hvad mener jeg med 'indgangsnøgle' til 'Inputbox'??? Ja nu føler jeg mig gammel..Sandt nok. Indgangsnøglen = Vejledningen Indgangsnøglen er netop det du anbefaler; at benytte InputBox-metoden, i stedet for InputBox-funktionen. Da du dengang anbefalede, at bruge InputBox-funktionen, ja så brugte jeg den.
(Kendte ikke til InputBox-metoden). Læser den igennem og afprøver om jeg kan finde ud af det.
|
//Bjarne
|
|