6
votes

Groupe de groupe et discensions de manière programmatique

Y a-t-il un moyen de groupermatiquement des colonnes de groupe / nongroupement ou de lignes d'Excel 2010?

Remarque:

  • La commande "Manual" est dans Data> Contour> Groupe / Ungroup
  • dans Excel 2003, cela fonctionnait pour travailler: Someshet.columns (i) .Showdetail = true / faux mais cela ne fonctionne plus en 2010 pour les groupes (uniquement pour les tables de pivotement et les groupes de sous-natures. )
  • Enregistrement d'une macro ne produit aucun code que je pourrais utiliser

    Plus précisément, appeler myrange.showdetail = true dans Excel 2010 développe un groupe effondré, mais soulève une erreur si le groupe est déjà élargi. Et la propriété showdetail Vrai, si le groupe est développé ou non.


0 commentaires

3 Réponses :


4
votes

dans Excel 2010, la propriété showDetail code> retourne toujours true pour un groupe, qu'il soit effondré ou expansé. La propriété cachée code> peut être utilisée à la place:

'to expand
If myRange.EntireColumn.Hidden Then
    myRange.EntireColumn.ShowDetail = True
End If

'to collapse
If Not myRange.EntireColumn.Hidden Then
    myRange.EntireColumn.ShowDetail = False
End If


0 commentaires

3
votes

En ce qui concerne les lignes non pas dans des tables pivot ... Cela n'a pas été mon expérience dans Excel 2010 que ShowDetail évalue toujours à vrai. Je pensais que c'était le cas, mais je n'ai pas réalisé que je devais être sur la ligne de résumé de cette propriété pour travailler comme prévu. Deuxièmement, je n'ai pas réalisé que la ligne récapitulative par défaut est sous les lignes groupées. Les tests pour effondrés / élargis sont devenus beaucoup plus clairs une fois que j'ai modifié ce paramètre pour avoir la ligne de résumé au-dessus des lignes regroupées (dans le ruban: Data> Data> Structure, affiche la zone DLG de contour).

Si ma cellule sélectionnée est sur la ligne de résumé , la showDetail évalue comme true si les enregistrements regroupés sont affichés et à Faux si elles ne le sont pas. La clé pour moi était d'être sur la ligne de résumé pour voir que le comportement fonctionne de cette façon. Avoir les rangées enfants / regroupées ci-dessus par défaut m'a vraiment jeté. P>

Voici ma macro, qui élargit dynamiquement et efface de manière dynamique les enregistrements groupés liés à la ligne de résumé lorsque je sélectionne une cellule sur une ligne de résumé. Et, il rend ma cellule dans la colonne audacieuse si la section est élargie. Cette macro ne fonctionne pas si j'ai choisi plus d'une cellule. P>

Notez que la protection de la feuille de calcul empêche l'expansion et l'effondrement des groupes de cellules. Ma feuille de calcul est protégée, donc je dégradis les feuilles d'élargir / effondrer puis de les reprocher après. (Une éventuelle amélioration serait pour moi de simplement déprodiger / protéger uniquement la feuille de courant au lieu de tous.) P>

(Target.Offset(1, 0).EntireRow.OutlineLevel = 2)


1 commentaires

Vous n'êtes pas obligé de faire cela que le travail supplémentaire .. Vous pouvez simplement simplement faire une feuille de calcul.Enableouplining = vrai;



0
votes

meilleur est de simplement changer la largeur de la colonne d'une cellule dans la plage que vous masquez. Cela déclenillera automatiquement la sélection. xxx


0 commentaires