2010-07-06 2 views
1

J'essaie d'élargir une gamme de nombres hexadécimaux. Par exemple j'ai sur la colonne K ... 1880 et la colonne L ... 188A ma gamme est 1880-188A Quand je développe la gamme, commençant sur la colonne MI obtiens 1880 1881 1882 1883 1884 1885 1886 etc. etc.Comment conserver tous les zéros en tête d'une plage hexadécimale dans VBA?

De un des messages que j'ai copiés et modifié le script VBA pour s'adapter à mon cas ... et ça marche ... mais j'ai trouvé 2 problèmes. Toute ma gamme d'appareils est à 4 chiffres et je dois garder tous les zéros en tête.
Par exemple, si ma plage est 0000 - 0005 .... les erreurs ... ne fonctionneront pas.
Si ma gamme est 0001-0005 puis-je obtenir 1 2 3 4 5 .... et je veux être 0001 0002 0003 0004 0005

Toute aide sera très appréciée .. Merci, JCAM Voici le script que je l'utilise ... tant qu'il n'y a pas des zéros sur ma plage


Sub FillHexNumbers() 
Dim cellKValue As Long 
Dim cellLValue As Long 
Dim diffBetweenKAndL As Long 
Dim iCtr As Long 

cellKValue = CLng(Format("&h" & Cells(2, 11).Text, "###")) 
cellLValue = CLng(Format("&h" & Cells(2, 12).Text, "###")) 

diffBetweenKAndL = cellLValue - cellKValue 

For iCtr = 0 To diffBetweenKAndL 
    Cells(2, 13 + iCtr).Value = Hex(cellKValue + iCtr) 
Next 
End Sub 

Répondre

0

vous devez formater les données sous forme de chaîne. Vous pouvez le faire avec un seul tout à fait '0045.

peut-être quelque chose comme ceci:
Cells(2, 13 + iCtr).Value = "'" & Hex(cellKValue + iCtr)

+0

Merci pour votre réponse ... mais je ne peux pas le faire .. – JCam

+0

essayez ceci: Cellules (2, 13 + iCtr) .Value = format (Hex (cellKValue + iCtr), "0000") – bugtussle

3

Le analyse contient des fonctions Toolpak pour convertir entre décembre et HEX - pour HEX vous pouvez spécifier le nombre de chiffres, par exemple = DEC2HEX (14,4) donne "000E". Vous pouvez activer ce paquet par "Outils/Add-Ins ...". En ajoutant des colonnes contenant des nombres DEC et l'affichage de la aequivalent HEX vous pouvez peut-être résoudre votre tâche sans VBA du tout ...

espoir qui aide

0

Essayez ceci:

Dim i as Integer 'This is the number you want to format 
Dim l as Integer 'The length you want your format in (suppose it's six) 
Dim h as String 

l = 6 
i = 47   'Any integer between 0 and 16,777,215 

h = Replace(Space(l - len(hex(i))), " ", "0") & hex(i) 'h = "00002F" 

La variables h retournera le texte de format "00002F".

Cheers,

Rick.

0

Si vous formatez une cellule sous forme de texte, puis ajoutez votre valeur hexadécimale avec des zéros en tête, ils doivent rester. Si vous avez affaire à des valeurs hexadécimales qui ont déjà perdu leurs premiers zéros, vous pouvez les corriger manuellement dans un éditeur de texte, puis formater vos nouvelles cellules sous forme de texte et coller des valeurs. Vous pouvez également définir un format de nombre personnalisé pour ces cellules en cliquant dessus avec le bouton droit de la souris, en choisissant Format cellules ..., choisissez Personnalisé, puis entrez une valeur du type "0000" (si, par exemple, vous souhaitez rembourrage à quatre caractères). Cela affectera uniquement les valeurs hexadécimales qui n'ont pas de caractère alpha. Si vous entrez 000A, Excel doit conserver les zéros et les traiter comme une chaîne automatiquement.

Questions connexes