2016-07-22 11 views
1

Ich habe eine Tabelle, wo ich ein Blatt mit dem Namen "Listen", die eine Reihe von benannten Bereichen enthält. Diese benannten Bereiche sind Teams von Mitarbeitern. Ich habe eine Befehlsschaltfläche eingerichtet, die einmal gedrückt wird und den in "H30" (Name des Mitarbeiters) und den Wert in H31 (Managername) eingegebenen Wert annimmt und den Namen des Mitarbeiters in der Teamliste auswählt, ausschneidet und einfügt in das Team des Managers trat "H31" ein (es ist für Manager, Leute bequem zu anderen Teams zu bewegen).Excel 2013 Schnitt und Einfügen in VBA ist nicht die Größe der benannten Bereiche, wenn der letzte Eintrag ist, was geschnitten

Das habe ich alles eingerichtet und es funktioniert gut, mit Excel automatisch die Größe der benannten Bereiche, so dass alle Funktionen gebunden an sie (dh. Combo-Boxen usw.) noch richtig arbeiten. Ich stoße jedoch auf ein Problem, wenn der Mitarbeiter der LETZTE Mitarbeiter im Team ist. Bei Verwendung von Ausschneiden/Einfügen in VBA wird die Größe des benannten Bereichs, aus dem sie ausgeschnitten wurden, nicht geändert, sodass am Ende ein Leerzeichen verbleibt.

Wie kann ich die Größe des benannten Bereichs immer noch korrekt ändern, da dies der Fall ist, wenn der Name des Kollegen von irgendwo anders in dem benannten Bereich abgeschnitten wird. Gibt es einen einfachen Weg, dies zu tun? Wenn nicht die unten ist der Ansatz, die ich tun möchte, aber ich bin nicht sicher, wie:

finden, welcher Bereich den Eintrag in „H30“ genannt wird in

If-Anweisung zu überprüfen, ob der Wert in „H30“ Streichhölzer der letzte Eintrag in dem benannten Bereich (Dies habe ich in Betrieb)

Resize Bereich nach dem Eintritt Schneiden (haben auch arbeiten)

den Bereich Identifizierung der Mitarbeiter herkommt mein Hauptproblem ist, und ich habe versucht, mit eine Schleife wie die folgende, um jeden benannten Bereich zu durchlaufen:

Dim nm As Name 

For Each nm In Worksheets("Lists").Names 
    If Not Intersect(Range("H30"), nm.RefersToRange) Is Nothing Then 
      'Do things 
    End If 
Next nm 

Ich habe die oben genannten Beispiele an anderer Stelle erhalten, aber es scheint nicht immer die Reichweite zu finden. Es werden auch keine Fehler erzeugt. Gibt es andere Ansätze, die ich finden kann, um herauszufinden, welcher benannte Bereich ein Wert ist?

Antwort

0

Um die benannten Bereich der Eintrag in „H30“ erscheint in, finden Worksheets("Lists").Range("H30").Name.Name

Schneiden einer Zeile/Spalte anpassen verwenden, um automatisch den Dynamikbereich formual. Wenn du also etwas von unten/oben schneidest, ist es weg. Anstatt Kopierzellen auszuschneiden und Inhalte zu löschen. Hoffnung Sie verwenden CountA in Ihrem benannten Bereich.

+0

Mir war es nicht bekannt, .Name zweimal so zu verwenden, danke. Ich habe auch CountA vergessen. Dank dieses half mir zu beenden, was ich brauchte. –