vba indirekt
2019-10-11T14:47:45+02:00
2019-10-14T15:05:53+02:00
2022-08-11T15:25:31+02:00
Norbert0
Sziasztok!

Van több érvényesítési listám köztük egy kétszintű, amit indirekt függvénnyel kell összekapcsolni a működéséhez. A listák egy külön munkalapon vannak. Innen állítaná be a kód a cella kiválasztásakor,  a névtartományokra hivatkozva az érvényesítést. Ez mindegyiknél jól működik kivéve a kétszintű érvényesítésnél, ahol belépne az indirekt függvény, de valamiért mindig hibára fut.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.ScreenUpdating = False
Application.EnableEvents = False

If Not Intersect(Target, Range("$A$1:$EJ$2")) Is Nothing Then

    With Target.Activate

    End With

ElseIf Not Intersect(Target, Range("A:A")) Is Nothing Then

    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Portfolio_Id"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    
ElseIf Not Intersect(Target, Range("B:B")) Is Nothing Then

    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Partnerek"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    
ElseIf Not Intersect(Target, Range("C:C")) Is Nothing Then

    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Csoportok"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
    
    Dim X As String
    X = ""
    X = Split(ActiveCell(1).Offset(0, -1).Address(1, 0), "$")(0) & Split(ActiveCell(1).Address(1, 0), "$")(1)

    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=INDIREKT(X)"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With


End If

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
Mutasd a teljes hozzászólást!
Szia.

Szerintem azért nem megy mert szöveget kér mindenhová. Azért van idézőjelben. Az x meg változó ugyan de nem annak értékét kapja meg hanem sima x karaktert.

Dim valami As String

Valami="direct("& cstr(x) & ")"

formula:= valami

Próbáld ki ehhez hasonlóan. A lényeget megérted szerintem. Nem száz de egy próbát megér.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd