10
votes

Comment obtenir Excel d'ignorer l'apostrophe au début de la cellule

J'écris un outil qui synchronise une base de données simple avec des feuilles Excel. Chaque élément d'une table dans la base de données correspond à une ligne de la feuille de calcul. J'ai lu la feuille Excel dans l'outil à l'aide de C # et de l'interface Excel Interop Com, puis a comparé les valeurs des éléments '(c'est-à-dire l'une des colonnes de la feuille Excel) après la synchronisation pour vous assurer qu'elles sont égales.

hier J'ai trouvé un cas où la comparaison n'était pas vraie: xxx

La seconde est celle que j'ai lue dans Excel, et comme vous pouvez le constater, il a sauté la première apostrophe . Existe-t-il un moyen de dire Excel de traiter la cellule comme il suffit de texto (non, il suffit de définir le formatage de la cellule n'aident pas)?

J'ai même essayé de copier la valeur () d'une cellule dans VBA comme ceci: xxx

Le résultat était que la valeur de la cellule cible est toujours bonjour '

S'il n'y a aucun moyen, je vais devoir faire quelque chose de moche comme xxx


0 commentaires

4 Réponses :


1
votes

Essayez ciblecell.value code> à la place. .formula code> est la formule vue dans la barre formule tandis que .value code> est la valeur évaluée de la cellule.

Donc, je suppose que vous auriez utilisé .Formula code> dans votre code d'origine aussi. Changer cela devrait fonctionner. P>

EDIT: OK, il n'a pas fonctionné (embarrassé). P>

Excel traite la citation unique de départ spécialement .. Tellement spécialement que même des propriétés de cellule / plage obscur. pas avoir accès. La seule solution de contournement que je pouvais trouver est essentiellement la même chose que ce que vous pensiez initialement. Voici: P>

If VarType(cell) = 8 And Not cell.HasFormula Then
 GetFormulaI = "'" & cell.Formula
Else
 GetFormulaI = cell.Formula
End If


1 commentaires

Non, ça n'aide pas - essayez-le vous-même. Voir ma fonction VBA mise à jour.



10
votes

J'ai bien peur que l'apostrophe ' est un caractère spécial pour Excel lorsqu'il apparaît comme premier caractère d'une cellule comme vous avez trouvé. Il indique à Excel de traiter le reste de la chaîne en tant que texte, de sorte que vous puissiez entrer quelque chose comme '34 .2 dans la cellule, et il le traitera comme la chaîne au lieu du nombre (pour la mise en forme et Donc).

Je suggère de faire quelque chose de similaire à ce que vous avez suggéré, sauf que vous le mettez dans Excel, vérifiez le premier caractère et ajoutez un supplémentaire s'il y en a déjà un. < / p>

Alternativement, vous pouvez préparer une apostrophe à toutes les valeurs - si vous les souhaitez tous comme texte. De cette façon, vous n'avez pas besoin de la vérification de premier caractère supplémentaire.


0 commentaires

4
votes

Regardez la propriété PrefixCharacter de la plage objet qui correspond à cette cellule

de l'aide:

Si la propriété transitionnavigkeys est faux , ce personnage de préfixe sera ' pour une étiquette de texte ou vide. Si la transitionnavigkeys propriété est vrai , Ce personnage sera 'pour un étiquette de gauche justifiée, "pour un étiquette justifiée à droite, ^ pour un étiquette centrée, \ pour un répété étiquette, ou vide.

the transitionnavigkeys concerne la compatibilité Lotus 1-2-3, de sorte que c'est probablement faux

Réponse basée sur l'article à:

http://excel.tips.net/pages/t003332_searching_for_leading_apostrophes.html

(Avertissement: pop-up légèrement gênant peut apparaître)


Edit: En réalité, cela ne sera probablement pas utile car préfixcharacter est en lecture seule: (

Edit2: J'avais raison la première fois. PrefixCharacter est renseigné uniquement si la valeur ajoutée à la cellule a démarré avec "alors il suffit de lire" Code> Préfixalaracter Plus et concaténate. Tant que transitionnavigkeys est false , c'est


0 commentaires

0
votes

Vous pouvez essayer de pré-en attente d'une citation unique à vos champs de texte ('' '+ dbfield) dans votre requête de sorte que pour les champs avec des guillemets simples intégrés, votre requête retournerait:

"stuff that wasn't in quotes"


0 commentaires