vasyMedlem sedan jan. 200717 inlägg Hej
Många frågor, ber om ursäkt för det.
Har skapat en index sida där jag vill skapa en rullista.
Jag har utöver Index 5 andra blad, A, B, C, D, E heter dom bladen.
Nu vill jag skapa en rulllista som visar dessa blad. Och när jag väljer t.ex B i rullistan så vill jag komma till detta blad.
@ndersMedlem sedan juni 200026 914 inlägg ... och du pratar om vad för program?
Är du i Excel fortfarande?
Ett enkelt exempel.
Först behöver du en rullista. Du kan naturligtvis använda en Formulärkontroll eller en ActiveX-kontroll men i det här exemplet används excels Dataverifiering:
Skapa först en rullista i en cell
Markera en cell (C2 i exemplet)
Gå till menyn Data->Verifiering->Inställningar
Ändra "Tillåt" till Lista och kryssa i Nerullningsbar listruta i cell
I Källa skriver du a;b;c;d;e (a,b,c,d,e om du kör engelska inställningar i Windows)
Ok
Nu borde du ha en rullista i Cell C2
Nu behöver du bara få den att byta sida också:
Högerklicka på Fliknamnet (typ "Index") och välj "Visa Kod"
Skriv in någonting i stil med:
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, ActiveSheet.Range("C2")) Is Nothing Then Exit Sub
Worksheets(ActiveSheet.Range("C2").Value).Activate
End Sub
Den här Koden körs varje gång någonting ändras på sidan. Den första raden kollar bara vilken cell som ändrats. Om det är någon annan cell än C2 så avslutas scriptet. Annars Hämtar den värdet i cell C2 och försöker öppna en sida med samma namn
vasyMedlem sedan jan. 200717 inlägg Kanon, tackar.
Kan man på något sätt få rulllistan synlig hela tiden. Just nu ser man den inte förren man markerar cellen?
//Tack på förhand
Näpp, inte vad jag vet. Se Sjödals tråd "Excel: Lista plus välja ur listan" för liknande diskussion. Där diskuteras andra metoder att få fram lite synligare kontroller också.
Hmm. Eftersom du redan använder Makron så skulle du Iofs kunna aktivera cellen så fort sidan öppnas.
Private Sub Worksheet_Activate()
Range("C2").Activate
End Sub
Vette tusan hur man skall få den att "fällas ut". Men pilen syns i alla fall. Löser det något?
*********** Ed***********
Man kanske skall ge ett exempel på hur du anväder en Kombinationsrute-kontroll (visa, verktygsfält, kontroller, Kombinationsruta, dra till bladet)
Högerklickar på kontrollen. Välj "egenskaper" och fyll i adressen till en lista i ListFillRange (några celler där du skrivit en hjälplista med fliknamnen. Kan ligga i en dold del av sidan)
Sedan väjer du "visa kod" och skriv in någonting i stil med
Private Sub ComboBox1_Change()
Worksheets(ComboBox1.Value).Activate
End Sub
Den kod du skrev tidigare kan du ta bort.
vasyMedlem sedan jan. 200717 inlägg Nu till ytterligare en fråga.
Försöker skapa en rulllista med kunder i A1. När jag tar fram en speciell kund så vill jag att deras rabatt ska synas i A2
Är det dataverifiering du använderi cell A1?
Då måste du skapa en hjälptabell någonstans tex i blad2 kolumn A och B. Typ:
Kund___Rabatt
AAB___15%
BAB___13%
CHB___17%
Sen skriver du helt enkelt en letaradfunktion i A2
=LETARAD(A1;Blad2!A:B;2;FALSKT)
eller
=VLOOKUP(A1,Sheet2!A:B,2,FALSE)
*******
Hmmm, i princip skulle du kunna använda kundlistan i blad2 som källa för verifieringen men den tycks inte gilla listor på andra blad. Det enklaste kanske är att lägga Kund/rabatt listan på samma blad som du vill ha rullisten, Tex i kolumn K och L, och helt enkelt gömma undan de kolumnerna
Kalle MMedlem sedan mars 20041 938 inlägg MindreVetande:
Om man vill ha själva verifieringslistan(Källan) på separat blad så kan man väl namnge listområdet med ett namn och sedan definiera namnet som källa?
Data/Verifiering och skriva =namnet (vid källa)
Eller är jag ute och cyklar? :-)
Nejdå. Du har rätt. Om du cyklar har du i alla fall cykelhjälm, reflex och ett fungerande lyse :-)
Tänkte bara hålla det enkelt. Jag tycker själv att namngivna områden kan blir krångliga. Men i det här fallet är det nog den bästa lösningen (menyn infoga->namn->definiera).
Hmmm, man kan till och med välja hela kolumn A, så man behöver inte hålla på med dynamiska listor heller. Smiiiiidigt.