webForumDet fria alternativet

Excelprocedur att köras i aktiv cell..

10 svar · 758 visningar · startad av Kalle M

Kalle MMedlem sedan mars 20041 936 inlägg
#1

Tjenis!

Ingen hejare på programmering direkt...men tänkte höra hur jag får följande procedur att köras i aktiv cell. I den cell man står i. Är väl nåt med Activecell bla bla bla osv!?

Dim intäkt As Integer
Dim kostnad As Integer
Dim resultat As Integer
Sub beräkning()
    intäkt = InputBox("Ange intäkt")
    kostnad = InputBox("Ange kostnad")
    resultat = intäkt - kostnad
    Range("B2") = intäkt
    Range("B3") = kostnad
    Range("B6") = resultat
 End Sub

Fråga 2:
När man skapar ny modul i VBA och skriver utan att spela in..lägger sig makrot då så man kan köra det i alla böcker? Verkar så!?.
Hur bestämmer man om makrot ska vara åtkomligt och kunna köras i alla excelböcker respektive specifik arbetsbok i VBA-editorn? Hur bestämmer man det?
Jag ser utforskaren i VBA på vänster sida men har inte riktig koll på det där.

MindreVetandeMedlem sedan okt. 2005371 inlägg
#2

Baklänges
2: Det finns en speciel, dold, arbetsbok som heter "egna.xls" (typ). Den ligger i excels autostartsmapp och startas varje gång excel startas. Om du lägger ditt makro i en modul under "Egna.xls" så blir den alltid tillgänglig. I projektutforskaren så ser du vilket "träd" koden hör till
Om du har riktigt tråkigt så kan du stå i excel (inte VBA-editorn). Gå till menyn Fönster->ta fram: Då ser du att det finns en dold arbetsbok

1. Vet inte riktigt vad du frågar om.
Men om vi antar att du vill skriva in intäkten i den cell du står i och att kostnaden/resultatet skall hamna 1 respektive 4 celler ner så ser koden ut någonting så här:
ActiveCell.Value = intäkt
ActiveCell.Offset(1, 0).Value = kostnad
ActiveCell.Offset(4, 0).Value = resultat

Kalle MMedlem sedan mars 20041 936 inlägg
#3

ok. Jag får ej fram "Egna.xls" i VBA. Finns inget "Ta fram" i menyn fönster i Excel. Är grått.

Jag får fram "Egna.xls" i projektutforskaren först när jag väljer spela in och väljer "Egna"!?. Men det vill man ju slippa göra.
Borde inte Egna.xls synas i projektutforskaren alltid?

Kalle MMedlem sedan mars 20041 936 inlägg
#4

Nu fick jag fram "Egna" genom Fönster/Ta fram.
Men varför är den dold? :-)

MindreVetandeMedlem sedan okt. 2005371 inlägg
#5

Kalle M skrev:

Nu fick jag fram "Egna" genom Fönster/Ta fram.
Men varför är den dold? :-)

Eftersom själva excelarket bara är ett tomt blad så är det meningslöst att visa det.
Däremot brukar den synas i projektutforskaren (Ctrl+R). I alla fall om du har använt det någon gång. Är det inte så enkelt att "egna" är "kollapsat", dvs att du måste trycka på + tecknet, moduler för att se själva kodmodulen? Annars är det verkligen konstigt.

Kalle MMedlem sedan mars 20041 936 inlägg
#6

Vet inte riktigt vad jag gör. Startar om Excel , trycker Alt-F11.
Ser inte Egna.xls. Trycker därför Alt F11 för att komma till Excel..väljer Fönster/ men "Ta fram" är ej aktivt(Grått)!?.

Ska jag vara i speciellt läge?

MindreVetandeMedlem sedan okt. 2005371 inlägg
#7

Hmmm, det kan vara så enkelt att Egna.xls bara laddas om det finns något makro i den. Har för mig att det är så i Excel XP och framåt.

Testa att starta inspelningen av ett makro,
välj lagra makrot i: "arbetsboken egna makron" (eventuellt står det "Alltid tillgängligt" eller nåt sånt)
avbryt inspelningen
Nu borde det tomma makrot synas i VBA-editorns projektutforskare:
Alt+F11 följt av Ctrl+ F6
finns det inte ett projekt i trädet?
+VBAProject (EGNA.XLS)
Därunder borde det finnas någon(ra) modul(er)

en annan variant är att kolla efter filen i mappen:
C:\Documents and Settings\KontoXXX\Application Data\Microsoft\Excel\XLStart

Kalle MMedlem sedan mars 20041 936 inlägg
#8

Jepp. Egna.xls kommer fram när man spelar in och avbryter :-).
Får väl köra den varianten. Tänkte först om jag missade något och gjorde det svårt.

Tackar!

MindreVetandeMedlem sedan okt. 2005371 inlägg
#9

Passa på att lägga ett lite "bra att ha makro" i "egna" så kommer det nog att vara åtkommligt i framtiden. Jag har rensat hårt i min "egna". Men det här är ett exempel på ett "bra att ha" makro som jag tydligen har tyckt var användbart någon gång...

Sub FyllNer()
    ActiveCell.EntireColumn.Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = "=R[-1]C"
    ActiveCell.EntireColumn.Copy
    ActiveCell.EntireColumn.PasteSpecial Paste:=xlValues
End Sub
Kalle MMedlem sedan mars 20041 936 inlägg
#10

ok. Kanon.

Fyller makrot nåt och klistrar värde?
Ska prova det.

MindreVetandeMedlem sedan okt. 2005371 inlägg
#11

Det var bara någonting jag hadde liggande (jag brukar importerar resultattabeller från ett statistikprogram, det lämnar en massa tomrum som behöver fyllas, annars "förstörs" data när jag sorterar). Gör något DU faktiskt har nytta av istället. Har du inget något irriterande "vardagsproblem" som skulle gå att lösa med ett makro (t.ex det där snabbkommandot du alltid har önskat dig).

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)