27. november 2023 - 20:16Der er
10 kommentarer og 1 løsning
VBA blokere for at indsætte værdi
Hejsa,
Jeg har kæmpet med dette i en del timer og kan ikke finde ud af hvad der skal stå....
Har nedenstående formel, som sætter X i de celler i kolonnerne B, C og D, hvis jeg bare klikker på den celle jeg ønsker et X i. Men jeg kæmper med at den ikke må sætte et X i kolonne B, med mindre der er en værdi større end 0. Jeg har fået lavet så den ikke må sætte X i kolonne C, hvis der er et X i kolonne B. Men det sidste kan jeg sgu ikke lige greje. Nogen der kan sparke mig i den rigtige retning? Jeg har prøvet med det der står mellem alle ? tegnene.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("B20:D2000")) Is Nothing And Target.Count = 1 Then If Target = "X" Then Target = "" Else Target = "X"
If Selection.Column = 3 And Target.Offset(0, -1) = "X" Or Selection.Column = 2 And Target.Offset(0, 1) = "X" Then Target = "" ??????? If Selection.Column = 2 And Target.Offset(0, -1) < 0 Then Target = "" ???????
HHA - no problemo :-) Jeg kender det godt selv, at man er så dybt inde i sin problemstilling, at man tager for givet, at andre også er det :-)
Mit første forslag ser sådan her ud, men jeg er lidt i tvivl om, hvorvidt det er helt rigtigt i forhold til en efterfølgende markering af kolonne C:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("B20:D2000")) Is Nothing And Target.Count = 1 Then Select Case Target.Column Case 2 If Target.Offset(, -1) <= 0 Or Target.Offset(, 1) = "X" Then Target.ClearContents Else If Target = "X" Then Target.ClearContents Else Target = "X" End If End If Case 3 If Target.Offset(, -1) = "X" Then Target.ClearContents Else If Target = "X" Then Target.ClearContents Else Target = "X" End If End If Case Else
Virker nu på det jeg ønskede, men nu virker den ikke på kolonne C, som du selv nævner. Den skal måske have af vide at det med kolonne A > 0 kun gælder for kolonne B? Men hvordan? Bare for at gøre det vanskeligere.... Hvis man sætter et kryds i kolonne B (selvfølge lig med det kriterie at der er en værdi i kolonne A > 0), kunne den så automatisk sætte et i kolonne D?
Generelt skal cellerne udfyldes med "X", med mindre der i forvejen står "X", i hvilket fald der så skal slettes/blankes ud. Dog gælder også følgende regler:
1. Skriv kun "X" i kolonne B hvis værdien i kolonne A er større end nul 2. Et "X" i kolonne B skal automatisk medføre et "X" i kolonne D 3. Skriv "X" i kolonne C uanset indholdet af kolonne A og B ??
Jeg har et Excel ark der skal læses af et andet program, som skal hente data fra det. Det skal så bruge X'erne til at finde ud af hvad det skal gøre med de data der står kolonnerne efter kolonne D.
I kolonne A vil der nogen gange være et tal, og her vil jeg gerne have muligheden for at kunne sætte et X i kolonne B. Når der er et X i kolonne B, skal den sætte automatisk sætte et X i kolonne D. Hvis der ikke er noget tal i kolonne A, så skal jeg ikke kunne sætte et X i kolonne B, men frit i kolonne C og D, som jeg lyster.
Har lagt en del af Excel filen på nedenstående link. Det giver nok mere fornemmelse af hvad det er jeg mener :)
Når du spørger 3 første, så er det vel B, C og D du mener?
Hvis der ikke er noget tal i kolonne A, så skal jeg ikke kunne sætte et X i kolonne B, men frit i kolonne C og D, som jeg lyster, altså i både C og D samtidigt.
Hvis der er et tal i kolonne A, må jeg kun kunne sætte kryds i B og så skal X i D automatisk sættes.
Jeg kan ikke lige gennemskue, hvor jeg har skrevet noget om "tre første", men ja - det er B, C og D, jeg arbejder ud fra :-)
Prøv med denne kode og se, om det giver dig det ønskede resultat:
If Not Intersect(Target, Range("B20:D2000")) Is Nothing And Target.Count = 1 Then Select Case Target.Column Case 2 With Target If .Offset(, -1) > 0 Then If .Value = "X" Then .ClearContents .Offset(, 2).ClearContents Else .Value = "X" .Offset(, 1).ClearContents .Offset(, 2) = "X" End If End If End With Case Else With Target If Me.Cells(.Row, 1) > 0 Then Else If .Value = "X" Then .ClearContents Else .Value = "X" End If End If End With End Select End If
Du er sgu skrap 👍 Den sidder lige i skabet.... Tusind tusind tak for hjælpen 💪
Synes godt om
1 synes godt om dette
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.