2009-12-16 14 views
1

Je travaille maintenant sur un programme de forage mathématique. J'avais déjà posé une question similaire mais je ne recevais pas de bonne aide. J'ai donc décidé de faire une recherche plus approfondie sur le problème et j'ai trouvé quelque chose d'intéressant. Maintenant, avant de commencer, je veux juste passer en revue les préliminaires. Oui, j'utilise Microsoft Excel 2007. Non, bien que cela puisse fonctionner pour vous, ce n'est pas pour moi.Centre de cellules d'Excel décalé

Bon maintenant que, qui est pris en charge:

Le problème que j'ai est quand je

ActiveCell.NumberFormat = "# ?/?" 

dans mon mon code, il provoque la ligne centrale de l'Excel pour être déplacé vers la gauche (C'est la seule façon dont je sais comment l'expliquer). Cela signifie que si vous avez quelque chose de juste justifié, il semblera centré, s'il est centré, il sera presque justifié à gauche et il y a très peu de différence entre justifié à gauche et centré.

si j'ai

ActiveCell.NumberFormat = "?/?" 

alors il n'y a aucun des problèmes ci-dessus.

Le code complet de cette section est la suivante:

Sub test() 
    Sheets("sheet1").Select 
    Range("a1").Select 
    For i = 1 To 10 
    ActiveCell.NumberFormat = "# ?/?" 
    With ActiveCell 
     .Locked = False 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlBottom 
    End With 
    ActiveCell.Value = 33 
    ActiveCell.Offset(0, 1).Select 
    Next i 
End Sub 

Toute suggestion ou la raison pour laquelle cela se produit serait grandement apprécié. Idéalement, l'utilisateur devrait être en mesure de voir un nombre mixte. De plus amples informations, si je change chaque cellule à la main pour fractionner alors cela fonctionne bien. c'est seulement quand Excel le fait.

Répondre

1

EDIT (2)

je l'ai essayé aussi avec Excel 2007, et il ne fait aucune différence si je change le NumberFormat manuellement ou par le script.

Quoi qu'il en soit, le script suivant devrait faire ce que vous voulez. Ajoutez-le à la source de votre feuille de calcul.

Il est déclenché chaque fois qu'une valeur est modifiée. Ensuite, il vérifie si la colonne correcte est affectée (1 dans mon cas), puis il essaie de formater le nombre avec des fractions, mais si aucune fraction ne résulte de cela, il utilise un format sans fraction.

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim cell As Range 
    For Each cell In Target.Cells 
     If cell.Column = 1 Then 
      If IsNumeric(cell.value) Then 
       cell.NumberFormat = "# ?/?" 
       cell.Calculate 
       If InStr(1, cell.Text, "/") = 0 Then 
        cell.NumberFormat = "#" 
       End If 
      End If 
     End If 
    Next cell 
End Sub 

Original post

Je ne l'ai essayé avec Excel 2003, mais voici pas de différence entre la mise à la main ou via VBA. S'il vous plaît assurez-vous que votre code fait exactement la même chose que vous faites manuellement, il suffit d'enregistrer une macro de ce que vous faites manuellement et l'exécuter sur une autre cellule.

La raison du décalage est qu'Excel réserve cet espace pour les fractions.

1,2 -> |  1 1/5| 
1 -> |  1 | 
33 -> |  33 | 
33,5 -> |  33 1/2| 

Est-ce que ce que vous aimeriez avoir?

1,2 -> |  1 1/5| 
1 -> |   1| 
33 -> |   33| 
33,5 -> |  33 1/2| 

Pourquoi voudriez-vous dans ce format?

+0

merci, oui je voudrais désactiver cet espace réservataire, afin qu'ils puissent simplement être centrés dans la colonne. J'ai trouvé le code pour changer les cellules en format fractionnaire à partir d'une macro :) – Samuel

+1

@Peter Lang: Je pense que vous êtes sur la bonne voie avec votre message édité. Cependant, il ne fonctionne pas correctement pour les décimales qui entraînent 0/X en tant que reste, comme 8.05. Pour le faire correctement, je pense presque que vous devez avoir une fonction personnalisée pour le gérer, mais le tout est plutôt désagréable. Je pense que cela soulève la question de savoir pourquoi vous voudriez éteindre l'espace réservé en premier lieu. –

+1

@Ben McCormack: Merci, n'a pas pensé à ça! Je l'ai encore changé, maintenant cette affaire est traitée aussi. Je ne sais toujours pas pourquoi on voudrait désactiver l'espace réservé :) –

1

Il aligne le nombre de sorte que les parties fractionnaires soient alignées lorsqu'elles sont vues dans des colonnes avec une police de largeur fixe.

3 1/3 
2  
1 3/4 
3 2/7 
2 2/3 
3 1/2 
6 
0

En fait, un format conditionnel fonctionnerait beaucoup mieux pour centrer tout. Voir l'image ci-dessous pour ma configuration.

Fraction Format Rule