Just nu i M3-nätverket
Gå till innehåll

Validering i celler


Oskar Hansson

Rekommendera Poster

Oskar Hansson

Jag har problem med en valideringsformel som jag vill lägga till i ett kalkylblad med ett makro. Om jag spelar in makro när jag anger foremeln manuellt får jag kodexemplet nedan. Formeln fungerar som tänkt. Men samma validering går ej att skapa med det inspelade makrot. Jag får felmeddelandet "program eller objektorienterat fel". Jag vill att en lista med alternativ (Svar) skall visas enbart om det står "Hej" i cellen bredvid. Jag har även testat att först skapa en sträng och ange den variabeln efter Formula1:= utan resultat.

 

Någon som vet hur jag ska göra?

 

With Selection.Validation
       .Delete
       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
       xlBetween, Formula1:="=OM($E$9=""Hej"";Svar;"""")"
       .IgnoreBlank = True
       .InCellDropdown = True
       .InputTitle = ""
       .ErrorTitle = ""
       .InputMessage = ""
       .ErrorMessage = ""
       .ShowInput = True
       .ShowError = True
   End With

 

//Oskar

____________________________________________________

 

Simplify Life - Everything should be made as simple as possible

 

Länk till kommentar
Dela på andra webbplatser

Kan du inte beskriva i ord/skärmdump hur din validiering skall se ut? Jag får inte ut något vettigt av "AD-delen" av det du postat.

Type:=xlValidateList betyder ju att du vill använda en lista. Men du verkar ju jobba med en formel?

Sen kommer helt plötsligt

Operator:= xlBetween Den går ju attt använda med nästan alla "types", utom Listan...

Sen finns det bara ett värde/formel, och det är ju oförenligt med xlBetween. Då skulle du ha haft både Formula1:= och Formula2:=

 

Din inspelning verkar ha fått frispel. Vad var det du ville egentligen?

 

 

[inlägget ändrat 2006-10-23 09:40:21 av MH2]

Länk till kommentar
Dela på andra webbplatser

Svaret är enkelt bara man kommer på det...

 

Inspelningen är fel, den är försvenskad när den borde vara engelsk...

 

Dvs notationen av formeln måste vara engelsk för att det ska fungera har jag funnit efter ett antal försök.

 

Så följande borde fungera:

Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,

Operator:= _

xlBetween, Formula1:="=IF($E$9=""Hej"",Svar,"""")"

 

MH2

Operatorn xlBetween gör ingen skada men behövs inte heller.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Märkligt, jag var inne på samma spår och ändrade till engelska utan att det fungerade. Men med din kod gick det. Undrar vad jag gjorde fel?

 

Länk till kommentar
Dela på andra webbplatser

Oskar Hansson

Jag kanske var lite otydlig. I mitt kalkylblad (egentligen i ett annat kalkylblad i samma bok, men det spelar ingen roll eftersom jag får även det att fungera när jag gör det manuellt) finns en namngiven lista (Svar). Den vill jag ska visas i en cell enbart när cellen bredvid har ett visst värde. Det fungerar när jag gör det manuellt men ej med makro:

 

1. Jag spelar in ett makro samtidigt som jag manuellt anger dataverifiering =OM($B$5="Hej";Svar;"" för cell2.

Då skapas följande makro:

Sub Makro()
   Range("C5").Select
   With Selection.Validation
       .Delete
       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
       xlBetween, Formula1:="=OM($B$5=""Hej"";Svar;"""")"
       .IgnoreBlank = True
       .InCellDropdown = True
       .InputTitle = ""
       .ErrorTitle = ""
       .InputMessage = ""
       .ErrorMessage = ""
       .ShowInput = True
       .ShowError = True
   End With
End Sub

Resultatet blir precis som jag vill ha det. Se bild.

 

2. Nu vill jag få makrot att göra samma sak, men det fungerar inte. Jag har även testat Monshis förslag.

 

//Oskar

____________________________________________________

 

Simplify Life - Everything should be made as simple as possible

 

[bild bifogad 2006-10-23 10:57:43 av Oskar Hansson]

877716_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Oskar Hansson

Tack för försöket, men jag fick det tyvärr inte att fungera när jag bytte OM till IF.

Fungerade det verkligen för dig? Btw så gäller det Excel 97.

 

//Oskar

____________________________________________________

 

Simplify Life - Everything should be made as simple as possible

 

Länk till kommentar
Dela på andra webbplatser

Missa inte kommatecknen, dvs ersätt semikolon som avgränsare med kommatecken (; -> ,)

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Oskar Hansson

Oups! Jag upptäckte det precis när jag jämförde våra koder tecken för tecken... Dum skillnad mellan svensk och engelsk...

 

Tack!

 

 

//Oskar

____________________________________________________

 

Simplify Life - Everything should be made as simple as possible

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...