2016-06-27 12 views
1
Public Function updateNameManager(name As Range) 
     Dim s As New cStringClass 
     Dim a As Range, cell As Range 

     On Error GoTo handleIt 

     For Each a In name 
      s.addAlphaNumeric a.Value 
      Set cell = a.Offset(0, 10) 

      Debug.Print s.TheString & " " & cell.Address 
      ThisWorkbook.Worksheets("Reagents").Names.Add NameLocal:=s.TheString, RefersTo:=cell <---- 1004 error 
      s.Clear 
     Next a 


handleIt: 
     Debug.Print "update... " & Err.Number & " " & Err.Description 
End Function 

Ich habe Probleme beim Definieren eines Bereichs als Name. Grundsätzlich erhält diese Funktion einen Bereich von A2: A10. Ich werde den Namen aus jedem Bereich erstellen und eine Zelle auf diesen Namen festlegen.Name Manager Fehler

Wenn der Code mit der auskommentierten Fehlerzeile ausgeführt wird, wird der Inhalt jeder Zelle aufgelistet.

Auch wenn ich ReferensTo hart: = "= Reagenzien! $ K $ 2" es immer noch aus Fehler. Ich denke, das ich brauche, um das Blatt in einer anderen Art und Weise zu verweisen, aber kann es nicht mit 1004 Anwendung definierte trainieren oder Objekt definierte Fehler

Vielen Dank im Voraus

+0

denke, es cell.address sein muss oder Sie einen Namen bereits haben, versuchen .names.add NameLocal: = „TESTINGNAME“, ..... –

+0

Danke für die schnelle Antwort .. Obwohl es didn‘ t though :( – Lee

+0

Was ist der Wert von 's.String'? –

Antwort

0

Try this:

Sehen Kommentare für Details.

Sub test() 

    Dim rngTest  As Range 

    '/ Add with Workbook Scope. (This will fail due to incorrect naming) 
    Set rngTest = Sheet1.Range("a5") 
    Debug.Print "Name Added: " & addName(rngTest, "###Test_WB", True) 

    '/ Add with worksheet Scope 
    Set rngTest = Sheet1.Range("b5") 
    Debug.Print "Name Added: " & addName(rngTest, "Test_WKS", False) 

End Sub 

Public Function addName(rngRangeTobeAdded As Range, strName As String, Optional bWorkbookLevel As Boolean = True) As Boolean 

    Dim bResult  As Boolean 
    Dim wbParent As Workbook 
    Dim wksParent As Worksheet 

    bResult = False 

On Error GoTo errHandler 

    If Not rngRangeTobeAdded Is Nothing And strName <> vbNullString Then 
     '/ Set Parent containers 
     Set wksParent = rngRangeTobeAdded.Parent 
     Set wbParent = wksParent.Parent 

     If Not bWorkbookLevel Then 
      '/ Add Local 
      wksParent.Names.Add strName, rngRangeTobeAdded 
      bResult = True 
     Else 
      '/ Add Global 
      wbParent.Names.Add strName, rngRangeTobeAdded 
      bResult = True 
     End If 


    End If 

errHandler: 
    If Err.Number <> 0 Then 
     bResult = False 
    End If 

    addName = bResult 

End Function 
+0

ändern Danke @cyboashu, die den Trick gemacht haben.Wenn nur ich genug Rep hatte, um dies zu wählen! – Lee

+0

froh, dass seine Arbeit! Prost! – cyboashu