02. oktober 2003 - 22:43Der er
22 kommentarer og 1 løsning
Macro i Excel med tastetryk
Jeg har ikke arb. med makroer i lang tid. Faktisk er det så længe siden at jeg brugte qpro. Her kunne jeg selv vælge om den skulle optage tastetryk eller funktioner. Hvordan gør jeg lige det i excel? Jeg har importeret en kolonne tal fra en hjemmeside. De kommer åbenbart til at stå som text med 4 tomme felter til slut. Jeg vil så optage det at gå ind i feltet og slette disse tomme felter. ...eller er der måske en anden smart måde at gøre det på?
Makrooptageren i Excel skelner ikke mellem, hvordan du udfører dine handlinger. Den er sådan set ligeglad mdd, om du bruger mus eller tastatur. Den registrer alene "resultatet".
Problemet er, at når du indspiller makroen registrerer den ikke de enkelte tastetryk, men derimod det, der kommer til at stå i cellen, når makroen afsluttes.
kabbak, duer ikke. jkrons, jeg tror at vi skal have en ekstra linie på: ActiveCell.Value = Mid(ActiveCell.Value, 1, Len(ActiveCell.Value) - 4) ActiveCell.Offset(ryk en celle ned) eller noget i den stil
Kan du uddybe hvad de forskellige komandoer i din kodelinie betyder?
For hver celle i det brugte område i det aktive ark skal du give den aktive celle en værdi, der en del af den samme værdi, startende fra begyndelsen og sluttende fire tegn før den samlede længde af værdien.
Activecell.value tager værdien af den aktive celle. MID() finder en substring af dette fra det første tal (1) til det sidste tal. LEN()-4 finder den samlede længde minus 4 og indsætter det som "hertil" i MID
jkrons Tak, jeg har ikke prøvet dit sidste forslag endnu (men gør det lige om lidt). Jeg fik den til at køre (med lidt fusk) så den stopper lidt brat. ActiveCell.Value = Mid(ActiveCell.Value, 1, Len(ActiveCell.Value) - 4) ActiveCell.Offset(1, 0).Range("A1").Select Application.Run "Mappe1!Makro2"
bak-> jeg havde selv tænkt på Sendkeys, men bruger det stort set aldrig. Jeg laver mest i Access, og her er SendKeys lidt farlig, fordi Sendkeys altid virker i det aktive vindue, og hvis der tilfældigvis er et andet vindue aktivt, når proceduren kaldes, end det man havde regnet med, da man skrev koden, kan du opstå en del uforudsete ting.
Her kan det dog gosdt lade sig gøre, man skal bare huske at skifte fra modularket til regnearket inden man tester koden - opdagede jeg :-)
bak, ja det var det jeg efterlyste - dog kan jeg ikke få loop'en til at virke med din kode?
jkrons, nu virker det uden fejl: Do Until ActiveCell.Value = "" ActiveCell.Value = Mid(ActiveCell.Value, 1, Len(ActiveCell.Value) - 4) Selection.Offset(1, 0).Select Loop
Synes godt om
Ny brugerNybegynder
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.