VBA blocare celule in functie de o conditie

axel
Mesaje: 59
Membru din: Dum Iul 28, 2019 8:25 am

VBA blocare celule in functie de o conditie

Mesaj de axel » Dum Oct 22, 2023 8:01 pm

Buna seara,
rog cine are bunavointa sa se uite peste codul din exemplul atasat. Codul blocheaza coloanele B si C doar pe randul cu conditia "da", adica randul 3
Am nevoie ca blocarea sa fie extinsa pe randurile 3-100.
Codul il las si aici, insa am atasat si fisierul
Multumesc, va doresc o seara placuta!


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("B:B,C:C")) Is Nothing Then
If UCase(Cells(Target.Row, "A")) = "DA" Then
Application.EnableEvents = False
MsgBox "EROARE"
Cells(Target.Row, "B").Select
Application.EnableEvents = True
End If
End If

End Sub
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Indigo-ONE
Mesaje: 437
Membru din: Mar Dec 11, 2018 8:54 pm

Re: VBA blocare celule in functie de o conditie

Mesaj de Indigo-ONE » Lun Oct 23, 2023 11:29 pm

Salut,
Uff credeam ca ai parasit forumul... :lol:

Codul nu face ce spui.
Codul blocheaza coloanele B si C doar pe randul cu conditia "da", adica randul 3
In fisier codul blocheaza doar col C daca exista 'da' in col A, pe acelasi rand.
Am nevoie ca blocarea sa fie extinsa pe randurile 3-100.
Tot randul?? sau numai col B si C?

Tot spuneam: explicatii cat mai amanuntite si cat mai exacte.
Nu imi place sa ofer un cod, apoi sa constat ca s-a dorit altceva. Nu voi reface codul.
Pe forum ai cautat? Cred ca a mai fost ceva asemanator.


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

axel
Mesaje: 59
Membru din: Dum Iul 28, 2019 8:25 am

Re: VBA blocare celule in functie de o conditie

Mesaj de axel » Mar Oct 24, 2023 4:36 am

Salutare!
Uff credeam ca ai parasit forumul...
Indigo-ONE,
Nu scapati de mine asa usor ... :lol:

Intr-adevar codul nu functioneaza. Nu inteleg de ce inainte de a-l incarca pe forum codul functioneaza, iar apoi daca-l descarc de aici nu face nimic. Pentru orice eventualitate il afisez aici

Cod: Selectaţi tot

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 If Not Intersect(Target, Range("B:B,C:C")) Is Nothing Then
 If UCase(Cells(Target.Row, "A")) = "DA" Then
 Application.EnableEvents = False
 MsgBox "EROARE"
 Cells(Target.Row, "B").Select
 Application.EnableEvents = True
 End If
 End If
 
 End Sub
Fata de precedenta postare, am nevoie ca blocarea randurilor sa fie activata cu un rand mai jos fata de conditia ceruta.
In exemplu, conditia este in "A3", blocarea sa fie activata in "B4-C100", conditia este in ......A8, blocarea B9-C100 si tot asa.
Mii de multumiri!
Zi buna!
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Indigo-ONE
Mesaje: 437
Membru din: Mar Dec 11, 2018 8:54 pm

Re: VBA blocare celule in functie de o conditie

Mesaj de Indigo-ONE » Mar Oct 24, 2023 11:45 am

Salut,

Nu am date suficiente...
Daca in A3 pun DA se vor bloca B4:C100
Apoi pun DA in A10 si se va bloca B11:C100, celulele dintre B4 si C11 vor ramane blocate. E ok asa?


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

axel
Mesaje: 59
Membru din: Dum Iul 28, 2019 8:25 am

Re: VBA blocare celule in functie de o conditie

Mesaj de axel » Mar Oct 24, 2023 1:09 pm

Da, e perfect asa

Indigo-ONE
Mesaje: 437
Membru din: Mar Dec 11, 2018 8:54 pm

Re: VBA blocare celule in functie de o conditie

Mesaj de Indigo-ONE » Mie Oct 25, 2023 2:17 pm

Daca se tasteaza altceva - decat DA - in coloana A ce se intampla?
Doresti sa fie sters automat?

OK. testeaza codul:

Cod: Selectaţi tot

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim Ki As Long
    For Ki = 1 To 100
        If Range("A" & Ki).Value <> "DA" Then
            If rng Is Nothing Then
                Set rng = Range("B" & Ki).Resize(, 2)
            Else
                Set rng = Union(Range("A" & Ki).Resize(, 2), rng)
            End If
        End If
    Next r
    If Not Intersect(rng, Target) Is Nothing Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
        MsgBox "Celule blocate!", vbCritical
    End If
End Sub


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

axel
Mesaje: 59
Membru din: Dum Iul 28, 2019 8:25 am

Re: VBA blocare celule in functie de o conditie

Mesaj de axel » Mie Oct 25, 2023 4:15 pm

La cum am gandit, in coloana A va fi scris DA doar daca se va indeplini o conditie, in rest nu se va scrie altceva.
Codul sa functioneze doar la Da, in rest nu conteaza.
Indigo-ONE, multumesc pentru timpul tau
Apreciez , respect !

cristi_an
Mesaje: 162
Membru din: Mie Mai 18, 2011 11:21 am

Re: VBA blocare celule in functie de o conditie

Mesaj de cristi_an » Mie Oct 25, 2023 8:24 pm

Salutare
Stiu ca este o problema de incepatori, insa este cineva care poate sa ma ajute cu informatia de mai jos?
Cum se activeaza VBA care lanseaza o formula din Foaie, iar acea formula sa ruleze C3:C100, fara a fi nevoie delansare cu F5?
Intr-un final am reusit ca in urma unor conditii sa imi afiseze data, nefiind nevoie de activarea cu F5.
La formule nu gasesc cum sa fie activate fara F5.
Rog scuzati termenii tehnici.
Multumesc si o seara placuta!

Cod: Selectaţi tot

Sub Macrocomandã5()

    Range("C2:C8").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-2]>0,(RC[-2]+RC[-1]),"""")"
    Range("C2:C8").Select
    Range("C3").Activate
    
End Sub

Private Sub worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet

If Target.Column = 8 Then
Range("I" & Target.Row) = Now
End If

If Target.Column = 14 Then
Range("M2:M" & Target.Row) = Range("L2")
End If

End Sub
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Indigo-ONE
Mesaje: 437
Membru din: Mar Dec 11, 2018 8:54 pm

Re: VBA blocare celule in functie de o conditie

Mesaj de Indigo-ONE » Sâm Oct 28, 2023 9:53 pm

@cristi_an

Deschide un topic nou.
Nu mai posta in topicul deschis de alti forumisti.


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

Scrie răspuns

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”