J'importe un rapport, je le publie dans une feuille de calcul, je crée un nouvel onglet (Feuille de travail - Nommé par "W (Date)" et je crée une table MS Query à partir de l'original pour créer une table filtrée sur le nouvel onglet.
Lorsque je nomme la nouvelle feuille, j'ai une feuille de données récapitulative dans laquelle je veux entrer le nouveau nom de feuille dans la première cellule ouverte de la colonne F.Je peux ensuite créer une liste dynamique à partir des noms de feuille pour extraire les données par feuille vers les graphiques page au début du classeur.
La section ci-dessous, lorsque j'arrive à la ligne qui indique, wsDest1.Range("F1" & RowCount).Select
le curseur passe à la ligne 110 de la colonne, au lieu de la ligne 11.
Utilisation de la fenêtre immédiate avec Print wsDest1.Cells(wsDest1.Rows.Count, "F").End(xlUp).Row
retourne "10". L'utilisation Print activesheet.usedrange.address
renvoie $ A $ 1: $ I $ 10 donc pour la colonne "F", il devrait toujours être 11 pour placer le curseur.
La plupart des variables sont déclarées en haut du script ou sont des déclarations immédiates avant l'action. le script s'exécute sans erreur, à l'exception du placement du curseur à la fin du script.
D'où viennent les 100 lignes supplémentaires?
Sheets.Add After:=Sheets(Worksheets.Count)
'Sheets("Sheet1").Select
Set wks = ActiveSheet
Do While sName <> wks.Name
sName = Application.InputBox _
(Prompt:="Enter new worksheet name")
On Error Resume Next
wks.Name = sName
On Error GoTo 0
Loop
Set wks = Nothing
'Define value "n" = sName
n = sName
Set wsDest1 = Workbooks("TG Shipped Lines_Late Shipment Tracking_WorkInProgress.xlsm").Worksheets("SUMMARY DATA")
wsDest1.Activate
RowCount = wsDest1.Cells(wsDest1.Rows.Count, "F").End(xlUp).Row
wsDest1.Range("F1" & RowCount).Select
Selection.Value = n
Set wsDest1 = Nothing
End Sub
wsDest1.Range("F1" & RowCount).Select
devrait être
wsDest1.Range("F" & RowCount).Select
EDIT: comme d'autres l'ont souligné, il n'est pas nécessaire de sélectionner / activer:
Dim wks As Worksheet, wb As Workbook, sName
Set wb = ActiveWorkbook
Set wks = wb.Worksheets.Add(After:=wb.Worksheets(wb.Worksheets.Count))
Do While sName <> wks.Name
sName = Application.InputBox(Prompt:="Enter new worksheet name")
On Error Resume Next
wks.Name = sName
On Error GoTo 0
Loop
'If "TG Shipped Lines_Late Shipment Tracking_WorkInProgress.xlsm"
' is where this code is running, then this line will do the rest
ThisWorkbook.Worksheets("SUMMARY DATA").Cells(Rows.Count, "F") _
.End(xlUp).Offset(1, 0).Value = wks.Name
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras