Est-il possible de stocker des éléments de la matrice de façon permanente en VBA dans Excel?
J'ai écrit une macro dans Excel qui utilise un tableau dynamique. Les utilisateurs d'ajouter des éléments de ce tableau.
Est-il possible de stocker des éléments de façon permanente, de sorte que les éléments seront disponibles après le classeur a été fermé?
Le truc, c'est que je ne veux pas de stocker des éléments dans une feuille de calcul et d'insérer un retour à la matrice lorsque le classeur est ouvert, mais d'avoir des éléments stockés de manière permanente dans la gamme.
Quel est le problème avec le stockage sur une feuille?
Voir aussi: stackoverflow.com/questions/7350388/... Il y a quelques notes.
Rappelez-vous d'accepter les réponses que le travail. Il y a une icône en forme de flèche dans le coin supérieur gauche de l'réponses - vous pouvez le sélectionner pour accepter la réponse.
Voir aussi: stackoverflow.com/questions/7350388/... Il y a quelques notes.
Rappelez-vous d'accepter les réponses que le travail. Il y a une icône en forme de flèche dans le coin supérieur gauche de l'réponses - vous pouvez le sélectionner pour accepter la réponse.
OriginalL'auteur user652061 | 2011-09-28
Vous devez vous connecter pour publier un commentaire.
L'un de vos meilleurs paris est de stocker les valeurs de tableau dans une feuille de calcul et la marque de la feuille de calcul comme masqués à l'aide de VBA.
Si vous utilisez d'autres choses comme les locaux CSV fichiers de registre, etc, alors le code va se comporter différemment, simplement en déplaçant le classeur à différentes machines, et vous perdrez la possibilité d'avoir plusieurs copies de la matrice.
Modifier (Excellente suggestion de @Reafidy les commentaires ci-dessous)
Sheets("ArrayValuesWorksheet").Visible = xlVeryHidden
pour prévenir la feuille apparaissant dans l'affichage de liste.Vous pouvez également protéger par mot de passe de votre code et de "Très Caché" fiches Outils/VBA Projet/Propriétés / Onglet Protection et de la saisie d'un mot de passe. L'utilisateur ne sera pas en mesure d'afficher "Très Caché" des feuilles. P. S. LOL Microsoft expression "Très Caché". Je veux dire, je reçois ce b/c que j'ai été là...c'est juste drôle de voir un Enum avec ce nom.
Merci pour les suggestions les gars, mais je ne veux pas stocker les données dans le caché des feuilles de calcul, comme je veux distribuer macro comme une sorte d'extension, add-in (je ne sais pas encore) de sorte qu'il fonctionne sur n'importe quel classeur à chaque fois que l'excel est ouvert. Je pense qu'il ne sera pas possible de partager la macro de cette façon, si il y a un caché de la feuille de calcul ci-joint. Par la façon dont pouvez-vous indiquer quel est le meilleur moyen de distribuer de la macro?
Une Macro est une partie de la feuille elle-même - vous ne pouvez pas distribuer une macro sans distribution de la feuille de calcul. Pour plus d'info, post une question distincte.
Aussi, l'avantage de remplir le tableau de la feuille de calcul vous pouvez également trier et de travailler avec le tableau plus facilement. Le remplissage de la feuille et à l'arrière de la variable tableau d'un seul coup sa seule ligne de code à chaque fois. Fossé de votre esprit ensemble à l'aide d'une feuille de calcul. 🙂
OriginalL'auteur Raj More
Vous pouvez également stocker un tableau dans un nom à partir du nom de la collection, et ce nom sera masqué.
Grâce Ronie et Reafidy. Il n'est pas un problème si il stocke les données comme une chaîne de caractères comme je pense que je peux le lire une chaîne de retour à la matrice. Ce qui est intéressant pour moi, c'est quand je partage cette macro comme une sorte de complément (extension), il sera possible de sauvegarder des données dans les noms de collection?
C'est la réponse, il n'est pas difficile à lire à partir de la Constante Nommée de nouveau dans un tableau lors de l'initialisation.
Beaucoup plus facile de remplir la feuille de calcul et de lecture arrière forme d'un seul coup. En utilisant nommé constantes, oui il est facile de revenir si c'est un tableau 1D - à l'aide de split. Mais il devient plus difficile si sa 2d, vous devrez créer plusieurs boucles.
MyArray = [{"A","B","C","D";1,2,3,4;"W","x","Y","Z"}]
Il ne stocke pas comme une chaîne de caractères. Ouvrez le gestionnaire de noms avec un exemple. J'ai créé un exemple numérique très facilement. Je peux récupérer les valeurs à ÉVALUER ou []. Pas de boucles. Je ne conteste pas qu'une feuille de calcul fonctionne, mais j'ai présenté une alternative valable.
OriginalL'auteur RonnieDickson
Pour répondre directement à votre question: Non, il n'y a aucun moyen de stocker un tableau qui a une durée de vie au-delà de l'application dans la mémoire, vous devrez l'enregistrer quelque part.
Plusieurs options sont disponibles, mais votre meilleur est le plus susceptible de l'enregistrer sur une feuille. "Très hidden' les feuilles ne sont visibles que par du code VBA donc, pour l'utilisateur c'est la même chose que le tableau fait d'être toujours là et actif en mémoire.
OriginalL'auteur aevanko
De lecture/écriture de Tableau dans la feuille vous pouvez utiliser
Après vous pouvez utiliser le
Visible
propriété de feuille de cacher que nous avons répondu.OriginalL'auteur Bruno Leite
"il n'y a pas moyen..." , >>> oui !
quelques exemples : listbox/ComboListBox (sur une feuille) = array ...
Pour la 2D tableau de variant : range()=array.
Ou la stocker dans un commandbarMenu (ceux-ci peuvent être faites multidimensionnelle)
ou whateverthat garde après le rechargement d'un classeur...
OriginalL'auteur Patrick Lepelletier