10
votes

VBA: retourner une référence d'objet de feuilles de travail à partir d'une fonction

Comment puis-je retourner une référence d'objet de feuilles de calcul? J'ai parcouru diverses recherches Google avec des résultats NADA.

Par exemple, j'ai un code de fonctionnement comme. Wshet déjà Dim'ed: P>

Function get_ExampleSheet() As Worksheets
    get_ExampleSheet = ActiveWorkbook.Worksheets("ExampleSheet")
End Function


0 commentaires

5 Réponses :


1
votes

Pour renvoyer un objet à partir d'une fonction, vous devez fournir le mot-clé définir : xxx


1 commentaires

Le problème était que la fonction (dans votre question et dans ma réponse avant que je l'ait modifiée) avait des feuilles de calcul comme type de retour - qui est une collection de la feuille de calcul objets! Ainsi, supprimez le S , de sorte qu'une feuille de calcul est renvoyée (et utilisez toujours le mot clé mot clé)!



17
votes

Vous retournez le mauvais type d'objet dans votre fonction.

Function get_ExampleSheet() As Worksheet
   Set get_ExampleSheet = ActiveWorkbook.Sheets("Sheet1")
End Function


0 commentaires

2
votes
Sub Lookup()
Dim state As Variant
Dim PodName As Variant
Set state = ThisWorkbook.Worksheets("Sheet1").Range("E:E")
Sheets("Sheet1").Activate
PodName = WorksheetFunction.VLookup(state, Range("A1:C55"), 2, False)
ThisWorkbook.Worksheets("Sheet1").Range("F:F") = PodName
End Sub
Macro should stop once the target cell is blank

0 commentaires

1
votes

http: // ExcelmaCromastery .com / blog / index.php / the-toch-guide-to-works-in-Excel-VBA /

Dans votre partie habituelle du code P>

Function create_working_sheet(sheet_name As String) As Worksheet


For i = 1 To Worksheets.Count
    If Worksheets(i).Name = sheet_name Then
        exists = True
    End If
Next i

If Not exists Then
    Worksheets.Add.Name = sheet_name
    'if we want it at the end
    'Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheet_name
End If
Set create_working_sheet = ThisWorkbook.Sheets(sheet_name)
End Function


0 commentaires

-1
votes

Un aperçu complet des moyens de définir une feuille de calcul à l'aide de VBA peut être trouvée ici: http: // codevba.com/excel/set_worksheet.htm