Tjo! Jag skulle nog ha ett annat upplägg som gör att problemet försvinner helt. Ha istället en lista med nycklar, och låt folk skriva in om de har lånat varje enskild istället istället. Eller så kan man skriva en liten kodsnutt som kollar. Använd aldrig VBA om det inte är absolut nödvändigt. I synnerhet ska det undvikas om det inte finns någon annan kod i applikationen. Min metod kommer funka, men det allra bästa är att designa applikationen så att sånt inte behövs. (Mitt första förslag.) Access är mer kompetent. Skulle nog leverera en bättre lösning. OM-funktionen är bättre och mer avancerad än vad den ser ut vid en första anblick då den ju kan innehålla nästlade villkor och andra funktioner i ett delvillkor. Så OM *hmm* den inte kan hjälpa dig har du för krånglig kontroll och då skulle jag också rekommendera åtminstone Access. Ni verkar missa poängen i att det redan finns tre lösningar i tråden? Ang. VBA där ... Kan man koppla den mot en specifik kolumn så den börjar på en specifik cell och kollar neråt? Läs mitt första inlägg. Det absolut enklaste sättet är att bygga om strukturen, det näst enklaste är göra det via conditional formatting, och en enkel formel. <b>Ni verkar missa poängen i att det redan finns tre lösningar i tråden?</b> <b>Ni verkar missa poängen i att det redan finns tre lösningar i tråden?</b> <b>>Niklas! Det är väl först när den som initierat frågan sätter tråden som löst man kan anse att personen är nöjd? Oavsett om du eller andra anser att deras förslag är 'de enda rätta'?</b> Niklas, jag skulle gärna testa ditt förslag om jag förstod hur det skulle användas. Jag är inte riktigt med på hur ANTAL.OMfunktionen kombinerat med villkorsstyrd formatering ska hjälpa mig med mitt problem? Nu kom det in något nytt; "antal" har du inte tagit upp tidigare. Frågan är ju då också om antalet tillgängliga nycklar varierar för olika märkningar, t ex om det finns totalt 3 nycklar av märkningen U5 och 10 av märkningen H7? Ja, antalet nycklar varierar. Att sätta låsningen på antal är ju inte ett alternativ då den kolumnen bara anger hur många nycklar en person har, av en viss typ. Okej, antalet är inte kopplat till varje nyckelbeteckning, det enda du vill göra är att på något sätt reagera om en nyckel redan finns.(Excel) Skapa OMfunktion som nekar/blinkar/varnar
Håller på med ett litet system i Excel där man kan boka upp nycklar.
Vill ha en funktion som varnar eller nekar helt om man fyller i ett nyckelnummer som redan är uppbokat. Excel är ju ett mycket kompetent program, så detta borde ju inte vara några som helst problem. Dock är jag inte riktigt hemma på hur jag ska lösa problemet. OMfunktionen verkar ju endast kunna lösa enklare saker så den verkar ju utesluten.
Det jag vill ha är alltså: OM Cellvärdet existerar i annan cell i kolumnen, så neka med blinkning/Varning/popupruta.
Är det möjligt att lösa med någon enkel funktion? Vore ruskigt bra då det är lite drygt o kolla av vilka nycklar som är registrerade och bokade redan.
//ChristofferSv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Annars är det besvärligt, eftersom du måste hålla reda på den du redan har. Vad du skulle kunna göra är att använda COUNTIF eller motsvarande ANTAL.OM, och om det är >1 sätta det i conditional formatting.Sv:(Excel) Skapa OMfunktion som nekar/blinkar/varnar
Sub Taken()
If ActiveCell.Offset(-1, 0).Value <> "" Then
Dim newBooking As Range
Set newBooking = ActiveCell.Offset(-1, 0)
newBooking.Select
Do While ActiveCell.Value > 0 And ActiveCell.Row > 1
If ActiveCell.Row > 1 Then ActiveCell.Offset(-1, 0).Select
If newBooking = ActiveCell Then
MsgBox "Nyckeln är redan bokad", vbExclamation + vbOKOnly, "FEL"
newBooking.Value = ""
newBooking.Select
Exit Do
End If
Loop
If newBooking.Value > 0 Then newBooking.Offset(1, 0).Select
Set newBooking = Nothing
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Call Taken
End Sub
Koden kollar från senast ifylld och uppåt i listan, jämför värdet, om den hittar kommer en ruta som säger just "Nyckeln är redan bokad" och den hoppar ur kontrollen och rensar senast ifyllda. Detta gäller för enter och inte tab men kan modifieras för att passa båda om man vet vilken kolumn nycklarna alltid kommer att finnas i.
Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Men jag antar att du känner dig mer hemma i Excel.Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Förklara mer vad som skall kollas så kan man säkert ge ett tips.
(Menar du tex att man skall leta efter det inskrivna värdet i ett annat område på samma flik i Excel, eller hur tänker du dig det hela?)
/ PerSv:(Excel) Skapa OMfunktion som nekar/blinkar/varnar
Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Om jag t.ex. vill att den ska börja kolla om nyckeln existerar på cell D16 och neråt. Är det möjligt?
Kan man även styra på minusvärden? "OM antal nycklar kvar < 0 - Visa felmeddelande" ?
Ang. Access... Det är inte jag som sköter administeringen av dessa utlåningar... Och Excel är faktiskt väldigt kompetent. Skulle kunna koppla Access mot t.ex. ett webbgränssnitt, men jag har inte tid :PSv:(Excel) Skapa OMfunktion som nekar/blinkar/varnar
Att använda imperativ programmering i onödan är att be om problem. (Naturligtvis hade en databas varit bättre ur många synvinklar, men det är klart att det nog inte är aktuellt.)Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Niklas! Det är väl först när den som initierat frågan sätter tråden som löst man kan anse att personen är nöjd? Oavsett om du eller andra anser att deras förslag är 'de enda rätta'?Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Varför ger du antalet tidigare svar som ett argument för att inte fortsätta ge förslag feedback?
Vid hur många lösningar skall man nöja sig vid?
Det går att göra väldigt mycket i Excel men Excel är inte lämpligt för att göra allt.
Det finns situationer användningen av excel dolt fel/problem med en tillämpning.
Det har blanda annat Computer Sweden tagit upp i några av sina artiklar.
Jag anser att en databas applikation är mer lämplig att lösa det ursprungliga problemet att organiserar utlåna och innehav av nycklar. Det finns kanske ett skäl till att lagra historik då om någt försvinner går det att se vilka som hade en nyckel.
I Access är det relativt lätt att skapa enkla databas applikationer. Jag ser det som det närmaste steget från Excel.Sv:(Excel) Skapa OMfunktion som nekar/blinkar/varnar
Eftersom jag är en ganska van utvecklare för Excel och känner till ganska många sätt att lösa de flesta problem, så kan jag säga att den lösning som kommer ge minst problem är den jag gav först, den som ger näst minst den jag gav därefter.
Att göra VBA-kod för något sånt här är som sagt att be om problem.
Att göra en övergång till ett helt annat format och system när man redan är insatt i ett är väl knappast det lättaste.
Det här är en så pass enkel situation att allt utom den enklaste lösningen är overkill. Anledningen till mitt uttalande var att jag kände att den allra enklaste lösningen blev dränkt i massa andra förslag. Mina lösningar tar si så där 20 sekunder att få klara styck, medan endera annan lösning skulle ta betydligt längre tid att göra. Det vore synd om OP inte testar det enkla först... Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Skriver lite mer så ni förstår lite hur det är uppbyggt.
Exceldokumentet är alltså uppbyggt av en namnlista. Består egentligen av massor av kolumner, men för att göra det enkelt att förklara så kan vi säga att den består av en Namnkolumn, en antalkolumn samt en märkningskolumn.
Namn Antal Märkning
Christoffer 1 U5
Den är alltså lite mer komplex än så, men det är lite jobbigt att förklara allt i detalj.
Till ovanstående funktion fungerade ju VBAn, dock kör ju den i hela dokumentet så den nekar ju även när man fyller i antal "1" på flera personer.
Om det finns något enklare och bättre sätt än VBA till att lösa detta så får ni gärna dela med er av lösningarna. Jag har som sagt försökt med både VBAlösningen samt försökt få igång ANTAL.OMfunktionen, men den lyckas jag inte med.
Har dock använt villkorsstyrd formatering om nycklarna är slut men den nekar ju fortfarande inte till att dubbelboka en nyckel. Sv:(Excel) Skapa OMfunktion som nekar/blinkar/varnar
Om den inte är med på något nytt sätt, så får du göra följande:
1. Markera hela kolumnen. Jag antar att det är kolumn "B"
2. Ange villkorsstyrd formatering med villkoret "'Formel är' =ANTAL.OM(B:B; B1)>1". Anpassa efter kolumnval, ta eventuellt bort conditional formatting från de första raderna, osv. Var noga att inte ha $ på andra argumentet.Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Sv:(Excel) Skapa OMfunktion som nekar/blinkar/varnar
-----------------------------------------------------------
N N
Y Y
C C
K K
E E
L L
T T
Y Y
P P
1 2
Antal nycklar: 60 Antal nycklar: 20
Antal kvar: 57 Antal kvar: 19
Namn Antal Märkning Antal Märkning
Christoffer 1 U5
Anders 1 M2
Nisse 2 U2
-----------------------------------------------------------
Såhär ser det alltså ut.
Antal kvar räknar ner automatiskt (Antal nycklar-SUMMA på antalraden).
Antal nycklar hämtas från ett annat excelblad som är kopplat.
Det är alltså MÄRKNINGEN jag vill låsa på. Det finns ett antal personal så det blir ganska många nycklar. Det jag vill är alltså att den ska NEKA om någon försöker fylla i nyckel "M2" igen i andra nyckeltypen, samt att det ska neka om man försöker lägga in "U5" eller "U2" i första nyckeltypen.
Känner rent spontant att en ANTAL.OMfunktion inte kommer lösa det då nycklarna inte bara är numrerade, utan även har bokstäver. Nu hoppas jag på att jag har rett ut alla frågetecken kring detta :)Sv: (Excel) Skapa OMfunktion som nekar/blinkar/varnar
Då använder du det jag har sagt från första början, antal.om och conditional formatting. Funktionen bryr sig inte ett dugg om det är siffror eller text.
En annan variant om det inte gör något att klottra ner med lite extra kolumner är att göra nya kolumner med samma antal.om-formel. Validering skulle eventuellt kunna fungera också.