2016-05-13 13 views
1

Ich erstelle ein Makro, um eine Tabelle in Excel zu bearbeiten. Ich konnte Code erstellen, um das zu tun, was ich brauche. Das Problem ist, dass meine Tabellennamen nicht immer die gleichen sind.Verweisen auf aktive Tabelle in VBA

Als Beispiel:

Range("DATA_INPUT4[MFG Catalog]").Copy 

Dieser Code kopiert die MFG Katalog Spalte in meinem Tisch ganz gut, aber der Tisch nicht immer wird zu dem Namen „DATA_INPUT4“.

Ich habe mit ein paar Sachen herumgespielt, um zu versuchen, es mit dem aktiven Tisch zu arbeiten, und ich fühle mich, als ob ich nah bin, aber ich kann keinen Fortschritt bekommen. Ich habe tryed:

Sub Copy_Active_Table() 

Dim activeTable As String 

activeTable = ActiveSheet.ListObjects(1).Name 

MsgBox activeTable 'To make sure it's pulling the correct table name 

Range("activeTable[MFG Catalog]").Copy 

End Sub 

Dies ist wahrscheinlich völlig falsch ist, aber man kann sehen, wo ich mit ihm gehe.

Ich habe das Gefühl, dass ich Dim activeTable As ListObject habe, aber ich habe es auch nicht herausfinden können.

Dieses scheinbar einfache Problem macht mich verrückt, jede Hilfe wäre genial.

Danke,

Brian

+0

Ja tatsächlich, Sie sind sehr nah. Probieren Sie Folgendes aus: 'Range (activeTable &" [MFG Catalog] "). Kopieren' – Ralph

+0

Huzzah! Vielen Dank, das hat perfekt funktioniert! –

+0

Bitte beachten Sie, dass Ihr Skript NICHT die aktive Tabelle übernimmt - es nimmt die erste Tabelle auf dem Blatt. – chukko

Antwort

0

in den Kommentaren beantwortet,

Ja in der Tat, Sie sind ganz in der Nähe. Versuchen Sie folgendes: Range(activeTable & "[MFG Catalog]").Copy

Ralph

Danke, Ralph.

0

Für diejenigen, die nach einer Lösung suchen aktive Tabelle zu verweisen, die Lösung ist:

ActiveCell.ListObject.Name 

Andere Lösungen Problem in der Frage fixieren (Variable in der Tabelle zu entnehmen) - aber das Skript in der Frage bezieht sich NICHT auf die aktive Tabelle, sondern auf die erste Tabelle im Blatt (die mit der aktiven Tabelle identisch sein kann).

Verwandte Themen