VBA controlla il nome del foglio di lavoro excel

Come posso controllare il nome del foglio di lavoro o della cartella di lavoro che la macro VBA viene eseguita all'interno? Da utilizzare come istruzione condizionale, (se la cartella di lavoro / foglio di lavoro nome = "", quindi …).

Dovresti evitare di specificare esplicitamente il foglio di lavoro (e la cartella di lavoro se più di uno sono aperti) quando si eseguono macro. La specifica del foglio di lavoro è facile utilizzando un con … End With statement . Ogni riferimento di area o cella appartenente al foglio di lavoro richiede semplicemente un periodo (aka o full-stop ) come prefisso per assegnare il foglio di lavoro come genitore. È solo quando si desidera fare riferimento a un foglio di lavoro diverso che è necessario specificare un foglio di lavoro diverso; ad esempio la copia da un foglio di lavoro a un altro. Questo è facilmente curato con una variabile impostata sull'object foglio di lavoro.

Esempio:

 dim ws2 as worksheet set ws2 = Sheets("Sheet2") with Sheets("Sheet1") .range("A2:D4).copy destination:=ws2.range("A2") 'more operations on Sheet1 here using .Range and .Cells end with 

Con quello detto, se si desidera determinare quale foglio di lavoro un riferimento di cella come Range("A1") appartiene ad un certo punto del codice, get la properties; Range.Parent di qualsiasi riferimento di cella e è ansible determinare la properties; di padrone di properties; .Name da quello. Il parametro esterno della properties; Indirizzo può essere utilizzato anche per estrarre un indirizzo di cella di string con la cartella di lavoro e il foglio di lavoro ma ciò richiederebbe una manipolazione di text per determinare il nome del foglio di lavoro.

Esempio:

 debug.print Range("A1").parent.name debug.print Cells(1, 1).parent.name debug.print Range("A1").address(0, 0, external:=True) debug.print Cells(1, 1).address(0, 0, external:=True) 

Se il foglio di lavoro è quello visualizzato sullo schermo è ansible utilizzare qualcosa di simile:

 If ActiveSheet.Name = "Name of Sheet" then *Code here End If