Discussion:
VBA Name zuweisen?
(zu alt für eine Antwort)
Peter Schuerer
2014-04-24 01:00:36 UTC
Permalink
Hallo Zusammen,

XL2002.

Ich kopiere per Makro Werte in eine Tabelle und möchte dem Bereich, in
dem die Werte eingefügt werden, einen Namen zuweisen.

Range("E47").Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWorkbook.Names.Add Name:="AnwendZahl", RefersTo:="=" +
Selection.Address

Die Werte werden in Zeile 47 ab Spalte E eingefügt. Soweit kein Problem.
Wenn aber nur ein Wert vorhanden und eingefügt wird, erstellt das Makro
einen sinnlosen Bezug für den Namen.
Wie kann ich das Problem mit nur einem Wert umgehen?

Danke und Gruß
Peter
Claus Busch
2014-04-24 06:06:30 UTC
Permalink
Hallo Peter,
Post by Peter Schuerer
Die Werte werden in Zeile 47 ab Spalte E eingefügt. Soweit kein Problem.
Wenn aber nur ein Wert vorhanden und eingefügt wird, erstellt das Makro
einen sinnlosen Bezug für den Namen.
Wie kann ich das Problem mit nur einem Wert umgehen?
überprüfe, ob in E47 überhaupt etwas drin steht und stelle die letzte
Spalte mit xlToLeft fest, das ist zuverlässiger:

Dim myRng As Range

If Len(Range("E47")) > 0 Then
Set myRng = Range(Cells(47, "E"), _
Cells(47, Columns.Count).End(xlToLeft))
End If

If Not myRng Is Nothing Then
ActiveWorkbook.Names.Add Name:="AnwendZahl", _
RefersTo:="=" & myRng.Address
End If


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Claus Busch
2014-04-24 06:17:55 UTC
Permalink
Hallo Peter,
Post by Claus Busch
überprüfe, ob in E47 überhaupt etwas drin steht und stelle die letzte
du kannst den Namen auch direkt beim Ausfüllen der Zeile 47 erstellen
lassen, wenn du folgenden Code in das Codemodul des entsprechenden
Tabellenblattes einfügst:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("47:47")) Is Nothing Or _
Target.Count > 1 Then Exit Sub

Dim myRng As Range

If Target.Column >= 5 Then
Set myRng = Range(Cells(47, "E"), Target)
ActiveWorkbook.Names.Add Name:="AnwendZahl", _
RefersTo:="=" & myRng.Address
End If

End Sub


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Peter Schuerer
2014-04-24 12:58:12 UTC
Permalink
Hallo Claus,
Post by Claus Busch
überprüfe, ob in E47 überhaupt etwas drin steht und stelle die letzte
Dim myRng As Range
Ich verwende diese Lösung und es funktioniert wunderbar.

Danke und Gruß
Peter

Lesen Sie weiter auf narkive:
Loading...