Thema Datum  Von Nutzer Rating
Antwort
Rot IsInArray
18.05.2015 18:46:18 Marco
NotSolved
19.05.2015 02:18:38 Gast2753
NotSolved

Ansicht des Beitrags:
Von:
Marco
Datum:
18.05.2015 18:46:18
Views:
1283
Rating: Antwort:
  Ja
Thema:
IsInArray

Hi, 

ich möchte folgende erreichen:

 

Ich habe von Zelle B6 bis I6 eine Zeile , wo ich jeweils immer einen Namen eingetragen werden kann. In den jeweiligen Spalten, also B8 bis B15, C8 bis C15 usw. bis I8 bis I15 können Informationen jeweils zu dem Namen eingetragen werden.

Die Zellen mit den Informationen (B8-B15 etc.) sollen solange deaktiviert bleiben, bis zuvor oben in den Zellen B6 bis I6  ein Name eingetragen wurde.

Hierzu habe ich folgenden Code, der das auch soweit macht wie ich will.

 

Dim i, ii As Integer
    Dim strNamen(7, 2) As String
    
    strNamen(0, 0) = "B6"
    strNamen(0, 1) = "B8:B15"
    strNamen(1, 0) = "C6"
    strNamen(1, 1) = "C8:C15"
    strNamen(2, 0) = "D6"
    strNamen(2, 1) = "D8:D15"
    strNamen(3, 0) = "E6"
    strNamen(3, 1) = "E8:E15"
    strNamen(4, 0) = "F6"
    strNamen(4, 1) = "F8:F15"
    strNamen(5, 0) = "G6"
    strNamen(5, 1) = "G8:G15"
    strNamen(6, 0) = "H6"
    strNamen(6, 1) = "H8:H15"
    strNamen(7, 0) = "I6"
    strNamen(7, 1) = "I8:I15"
    'MsgBox strNamen(0, 0) & "-" & strNamen(0, 1)
  
  For i = 0 To 7
  For ii = 0 To 1
    'MsgBox strNamen(i, ii)
        If IsEmpty(Range(strNamen(i, 0))) = True Then
           
            Range(strNamen(i, 1)).Locked = True
            Range(strNamen(i, 1)).Interior.ColorIndex = 2
            Application.DisplayAlerts = False
        Else
             Range(strNamen(i, 1)).Locked = False
             Range(strNamen(i, 1)).Interior.ColorIndex = 6
        End If
    Next
  Next

 

 

Jetzt macht er immer erst das ganze Array durch.

Am liebsten wäre mir eigentlich, dass er im Array sucht, welches Namesfeld zum ändern ausgewählt wurde, dann soll er dieses Feld im Array suchen und mir die dazugehörigen Zellen ausgeben, die für die Suchzelle hinterlegt sind. So bspw. wenn B6 die Target.Address ist, dann soll er B8:B15 ausgeben

Also in der Art:

If Target.Address = IsInArray

    If IsEmpty(Range(IsInArray(Adresse)) = True Then
                Range(IsInArray(Adresse).Locked = True
                Range(IsInArray(Adresse)).Interior.ColorIndex = 2
    Else
                Range(IsInArray(Adresse).Locked = False
                Range(IsInArray(Adresse).Interior.ColorIndex = 6
    End If
End If

Vllt hat jemand eine Idee :)

Danke


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot IsInArray
18.05.2015 18:46:18 Marco
NotSolved
19.05.2015 02:18:38 Gast2753
NotSolved