Sortie de nombres avec séparateur ordinal msgbox vba. Créer vos propres boîtes de dialogue à l'aide de VBA

La fonction MsgBox permet afficher les informations sur l'écran sous la forme d'une fenêtre.

Vue générale des fonctions :

Message MsgBox

[,code du bouton [,titre]]

message – définit la valeur de l'expression qui sera affichée dans la fenêtre de message. Cette expression peut être du texte, qui doit être cité, et/ou une variable. Pour afficher le texte du message et les valeurs des variables dans une seule fenêtre, utilisez l'opération de concaténation de chaînes (&).

Dim Pi en tant que célibataire

MsgBox "pi="&Pi

Résultat de la macro :

code du bouton – détermine quels boutons et icônes seront affichés dans la fenêtre de message. Si ce paramètre n'est pas précisé, la boîte de message contient uniquement le bouton D'ACCORD.

en-tête - contient le texte qui apparaît dans la barre de titre du message. Si cet argument n'est pas donné, l'en-tête contient la chaîne MicrosoftExceller.

Dim Pi en tant que célibataire

MsgBox Pi, "C'est Pi"

Saisie d'informations en VBA, cela peut être fait en utilisant la fenêtre de saisie :

Fonction Zone de saisie crée une fenêtre de saisie :

Boîte de saisie (message

[,titre[,valeur]])

message – une chaîne de caractères ou une variable de chaîne contenant un message texte destiné à l'utilisateur ;

titre – texte affiché dans la barre de titre du message ;

valeur – Définit les valeurs par défaut affichées dans le champ de texte de la boîte de dialogue.

PROBLÈME 2. L'angle est donné en radians. Convertissez en degrés.

Const pi = 3,14159

Dim g comme entier

Dim comme un entier

Dim s comme entier

r = InputBox("r=", "Valeur de l'angle en radians", pi / 4)

g = Fix(r * 180 / pi)

m = Fix((r*180/pi-g)*60)

s=Fix(((r*180/pi-g)*60-m)*60)

MsgBox g & "degrés" & m & "minutes" & s & "secondes"

18. Opérateur conditionnel

Les instructions conditionnelles sont utilisées lorsque, en fonction d'une condition, il est nécessaire d'effectuer l'une ou l'autre action.

Opérateur conditionnel, correspondant au schéma fonctionnel donné, a la forme :

Si expression Alors

opérateur1

opérateur2

Dans cette construction, l'expression doit être de type booléen.

C'est ainsi que fonctionne l'opérateur. La valeur de l'expression est calculée. Si c'est vrai, l'instruction 1 est exécutée, sinon (l'expression est fausse) l'instruction 2 est exécutée.

Si, selon la condition, une action est effectuée et que sinon rien ne se passe, alors l'algorithme ressemble à :

Opérateur conditionnel dans ce cas a le design :

Si expression Alors

opérateur

Cette entrée peut être appelée « en omettant l’instruction else ».

Ici, l'instruction est soit exécutée, soit ignorée, en fonction de la valeur de l'expression.

Plusieurs instructions If...Then...Else imbriquées sont autorisées, avec autant de niveaux d'imbrication que nécessaire.

Si expression1 Alors

opérateurs1

Sinon expression2 alors

opérateurs2

Sinon expression3 alors

opérateurs3

Sinon expressionN alors

opérateursN

les opérateurs

Pour rendre un programme plus facile à lire, au lieu de plusieurs instructions imbriquées, il est parfois préférable d'utiliser l'instruction Select Case

Sélectionner un cas<expression>

Cas<condition de sélection 1>

<opérateurs 1>

Cas<condition de sélection 2>

<opérateurs 2>

……………..

Cas<condition de sélectionN>

<les opérateursN>

<les opérateurs>

19. Exemples de programmes

TÂCHE 3 . Coefficients connus a, b et c de l'équation quadratique hache 2 +bx+c=0. Calculez les racines d'une équation quadratique.

Données d'entrée : a, b, c.

Données de sortie : x 1, x 2.

Sous-prim7()

Dim x1 comme simple

Dim x2 comme simple

InputBox("A=","Coefficients d'une équation quadratique", 2)

InputBox("B="," Coefficients d'équation quadratique", 3)

InputBox("C="," Coefficients d'équation quadratique", -2)

d = b^2 - 4 * a * c

Si d< 0 Then

MsgBox "Aucune solution valide", vbCritical

x1=(-b+Sqr(d))/(2*a)

x2=(-b-Sqr(d))/(2*a)

MsgBox "X1=" & x1 & Chr(13) & "X2=" & x2, vbInformation

TÂCHE 4. Donné nombre réel X. Pour la fonction dont le graphique est donné ci-dessous, calculez oui=F(X).

Si x<= -1 Then

SinonSi x > 1 Alors

TÂCHE 5. Étant donné des chiffres réels X Et oui. Déterminez si le point avec les coordonnées ( X; oui) la partie ombrée de l'avion.

Point avec coordonnées ( X;oui) appartient à la partie ombrée du plan si :

Si oui<= 2 * x + 2 And

Dans cet article, vous apprendrez à créer une boîte de message dans VBA Excel pouvant afficher diverses informations.

Fonction Boîte de message affiche une boîte de message et attend que l'utilisateur clique sur un bouton, puis l'action sera effectuée en fonction du bouton sur lequel l'utilisateur a cliqué.

Syntaxe

MsgBox(invite[,boutons][,titre][,fichier d'aide,contexte])

Description du paramètre

  • La requête est un paramètre obligatoire. Chaîne qui apparaît sous forme de message dans une boîte de dialogue. La longueur maximale de l’invitation est d’environ 1 024 caractères. Si un message s'étend sur plusieurs lignes, les lignes peuvent être séparées en utilisant un caractère de retour chariot (Chr(13)) ou de saut de ligne (Chr(10)) entre chaque ligne.
  • Les boutons sont un paramètre facultatif. Expression numérique qui spécifie le type de boutons à afficher, le style d'icône à utiliser, l'ID de bouton par défaut et la modalité de la boîte de message. Si laissé vide, la valeur par défaut des boutons est 0.
  • Le titre est un paramètre facultatif. L'expression de chaîne apparaît dans la barre de titre de la boîte de dialogue. Si le titre reste vide, le nom de l'application est placé dans la barre de titre.
  • Le fichier d'aide est un paramètre facultatif. Expression String qui identifie un fichier d'aide qui sera utilisé pour fournir une aide contextuelle pour la boîte de dialogue.
  • Le contexte est un paramètre facultatif. Expression numérique qui identifie le numéro de contexte d'aide attribué à l'auteur de l'aide pour la rubrique d'aide correspondante. Si le contexte est fourni, le fichier d'aide doit également être fourni.

Le paramètre Buttons peut prendre l’une des valeurs suivantes :

  • 0 vbOKOnly - affiche uniquement le bouton OK.
  • 1 vbOKCancel - affiche les boutons OK et Annuler.
  • 2 vbAbortRetryIgnore - Affiche les boutons Annuler, Réessayer et Ignorer.
  • 3 vbYesNoCancel - Affiche les boutons Oui, Non et Annuler.
  • 4 vbYesNo - affiche les boutons Oui et Non.
  • 5 vbRetryCancel - affiche les boutons de réessai et d'annulation.
  • 16 vbCritical - affiche l'icône de message critique.
  • 32 vbQuestion - Affiche une icône d'avertissement.
  • 48 vbExclamation - Affiche une icône de message d'avertissement.
  • 64 vbInformations. Affiche une icône de message d'information.
  • 0 vbDefaultButton1 - le premier bouton par défaut.
  • 256 vbDefaultButton2 - le deuxième bouton par défaut.
  • 512 vbDefaultButton3 - Le troisième bouton par défaut.
  • 768 vbDefaultButton4 - Le quatrième bouton par défaut.
  • 0 vbApplicationModal Application modale - l'application actuelle ne fonctionnera pas tant que l'utilisateur n'aura pas répondu au message.
  • 4096 vbSystemModal Modal système - toutes les applications ne fonctionneront pas tant que l'utilisateur n'aura pas répondu au message.

Les valeurs ci-dessus sont logiquement divisées en quatre groupes : Le premier groupe (0 à 5) indique les boutons qui seront affichés dans la boîte de message. Le deuxième groupe (16, 32, 48, 64) décrit le style de l'icône qui sera affichée, le troisième groupe (0, 256, 512, 768) indique quel bouton doit être le bouton par défaut et le quatrième groupe (0, 4096) définit la modalité de la fenêtre de message.

Valeurs de retour

La fonction MsgBox peut renvoyer l'une des valeurs suivantes, qui peut être utilisée pour identifier le bouton sur lequel l'utilisateur a cliqué dans la boîte de message.

  • 1 - vbOK - Bouton OK enfoncé.
  • 2 - vbCancel - Bouton Annuler enfoncé
  • 3 - vbAbort - Bouton Abandonner enfoncé
  • 4 - vbRetry - Bouton Réessayer enfoncé
  • 5 - vbIgnore - Bouton Ignorer enfoncé
  • 6 - vbOui - le bouton « Oui » est enfoncé
  • 7 - vbNon - Pas de clic

Sub MessageBox_Demo() "Message simple MsgBox ("Bonjour") "Message avec titre et boutons oui, non et annuler a = MsgBox("Aimez-vous la couleur bleue", 3, "Choisissez une réponse") "Code du bouton appuyé bouton MsgBox ("Valeur réponse" & a) End Sub

MsgBox étape par étape

Étape 1 - La fonction ci-dessus peut être exécutée soit en cliquant sur le bouton Exécuter dans la fenêtre VBA, soit en cliquant sur le bouton que vous avez vous-même ajouté à la feuille Excel.

Étape 2 - Une simple zone de texte s'affiche avec un message "Bienvenue" et un bouton "OK"

Dans cet article, vous apprendrez comment créer un champ de saisie dans VBA Excel - InputBox, dans lequel vous pourrez saisir diverses informations pour les calculs.

Fonction Zone de saisie invite les utilisateurs à saisir des valeurs. Après avoir saisi les valeurs, si l'utilisateur clique sur le bouton OK ou appuie sur ENTRÉE sur le clavier, la fonction InputBox renvoie le texte dans la zone de texte. Si l'utilisateur clique sur le bouton Annuler, la fonction renverra une chaîne vide ("").

Syntaxe

InputBox(prompt[,titre][,default][,xpos][,ypos][,helpfile,context])

Description du paramètre

  • Demande - paramètre obligatoire. Chaîne qui apparaît sous forme de message dans une boîte de dialogue. La longueur maximale de l’invitation est d’environ 1 024 caractères. Si un message s'étend sur plusieurs lignes, les lignes peuvent être séparées en utilisant un caractère de retour chariot (Chr(13)) ou de saut de ligne (Chr(10)) entre chaque ligne.
  • Le titre est un paramètre facultatif. L'expression de chaîne apparaît dans la barre de titre de la boîte de dialogue. Si le titre reste vide, le nom de l'application est placé dans la barre de titre.
  • La valeur par défaut est un paramètre facultatif. Le texte par défaut dans le champ de texte que l'utilisateur souhaite afficher.
  • XPos est un paramètre facultatif. La position de l'axe X correspond à la distance horizontale approximative à partir du côté gauche de l'écran. Si vous laissez le champ vide, le champ de saisie sera positionné horizontalement.
  • YPos est un paramètre facultatif. La position de l'axe Y correspond à la distance verticale approximative à partir du côté gauche de l'écran. S'il est laissé vide, le champ de saisie sera centré verticalement.
  • Le fichier d'aide est un paramètre facultatif. Expression de chaîne qui identifie un fichier d'aide qui sera utilisé pour fournir une aide contextuelle pour la boîte de dialogue.
  • context - Paramètre facultatif. Expression numérique qui identifie le numéro de contexte d'aide attribué à l'auteur de l'aide pour la rubrique d'aide correspondante. Si le contexte est fourni, le fichier d'aide doit également être fourni.

exemple

Calculons l'aire du rectangle en obtenant les valeurs de l'utilisateur au moment de l'exécution à l'aide de deux champs de saisie (un pour la longueur et un pour la largeur).

Fonction findArea() Dim Longueur As Double Dim Largeur As Double Longueur = InputBox("Entrez la longueur", "Entrez le numéro") Largeur = InputBox("Entrez la largeur", "Entrez le numéro") findArea = Longueur * Largeur Fin Fonction

InputBox étape par étape

*Étape 1* - Pour faire de même, appelez en utilisant le nom de la fonction et appuyez sur Entrée comme indiqué dans la capture d'écran suivante.

Étape 2 - Une fois exécuté, le premier champ de saisie (longueur) s'affiche. Entrez une valeur dans le champ de saisie.

La sortie (transfert à l'utilisateur) des résultats du programme et des autres messages s'effectue via la boîte de dialogue de message.

Pour organiser la sortie des informations, la fonction intégrée est utilisée Boîte de message.

Considérons les options pour son utilisation.

1. oui = Carré(16)

MsgBox et

2. S=99

BoîteMsg("S= ” & S)

c'est un signe enchaînementesperluette;

utilisé pour combiner plusieurs lignes en une seule

3. une = 5 : b = 101

MsgBox("a="& une & " " & " b = " &b)

4.MsgBox("a=" & a & Chr(13) & "b=" & b)

en utilisant cette fonction, vous entrez symbole de transition

sur une nouvelle ligne(convertit un nombre en caractère)

Travailler avec des objets Excel

Modèle objet Excel représente une hiérarchie d'objets subordonnés à un objet Application, ce qui correspond à à Application Excel. Objets Exceller sont classeurs, feuilles de calcul, graphiques, plages de cellules, cellules, etc.

VBA peut manipuler par programme n'importe lequel de ces objets.

Chaque un objet a un ensemble propriétés, méthodes Et événements.

Propriété est une caractéristique ou un paramètre d’un objet.

Méthode est une action qu'un objet peut effectuer.

Événement est une action à laquelle un objet réagit automatiquement.

Gérer un objet dansVBAvous pouvez le faire de 3 manières :

    modifier les propriétés de l'objet ;

    en activant une méthode associée à un objet ;

    définir une procédure qui sera lancée en réponse à un événement.

Sortie d'informations vers une cellule Excel

Une cellule en tant qu'objet Excel dans un programme VBA est désignée Cellules (i, j), Où je- numéro de ligne, j– numéro de colonne de la feuille de calcul.

Oui

Signification Oui sera affiché sur la feuille active du classeur Excel dans une cellule B3

= 0.01

Cellules (3, 2) = Oui

AVEC

Variable B se verra attribuer la valeur

qui est stocké dans la cellule C5

(c'est-à-dire le contenu de la cellule C5)

lire des informations à partir d'une cellule Excel

B = Cellules (5, 3)

outil vba pour saisir des informations

La saisie des informations de l'utilisateur s'effectue via une boîte de dialogue de saisie. Implémenté à l'aide d'une fonction intégrée Zone de saisie.

Dim x Comme Simple

X = Val(InputBox("Entrez x"))

Fonction Zone de saisie renvoie la séquence de caractères saisie dans le champ de saisie ( 15 ) comme type de données Chaîne(chaîne). Fonction intégrée Val() Convertit une valeur de chaîne d'un champ de saisie en une valeur numérique.

Processus informatiques linéaires

Algorithme linéaire se caractérise par une séquence stricte de mise en œuvre des blocs dans l'ordre de leur disposition dans le circuit - de haut en bas. Il n'y a pas de blocs conditionnels. Chaque bloc est exécuté une fois.

Exemple 1 Calculer la valeur de la fonction

à k = 33,5 x = 17

1. Créons un algorithme pour résoudre le problème.

2. Dans la fenêtre de l'éditeur de code, saisissez le code du programme :

Option explicite

Sous-processus_linéaire()

Dim k Comme Unique, x Comme Unique, y Comme Unique'déclaration de variables

x = Val(InputBox("Entrez la valeur de x"))

y = k * Exp(Péché(x))

MsgBox "y="&y' afficher le résultat dans une boîte de dialogue

Fin du sous-marin

Équipe Option explicite oblige à déclarer toutes les variables dans un programme donné. Ne peut être placé que dans la section des annonces du module.

Cette note décrit des techniques de création de boîtes de dialogue personnalisées qui améliorent considérablement les fonctionnalités standard d'Excel. Les boîtes de dialogue sont l’élément d’interface utilisateur le plus important de Windows. Ils sont utilisés dans presque toutes les applications Windows et la plupart des utilisateurs ont une bonne idée de leur fonctionnement. Les développeurs Excel créent des boîtes de dialogue personnalisées à l'aide de UserForms. De plus, VBA dispose d'outils pour créer des boîtes de dialogue standard.

Riz. 1. Comment fonctionne la procédure GetName

Téléchargez la note au format ou, exemples en

Avant de vous plonger dans les tenants et les aboutissants de la création de boîtes de dialogue à l'aide de formulaires personnalisés, vous devez apprendre à utiliser certains des outils intégrés d'Excel pour afficher les boîtes de dialogue.

Utiliser les fenêtres de saisie de données

Fenêtre de saisie des données est une simple boîte de dialogue qui permet à l'utilisateur de saisir une seule valeur. Par exemple, vous pouvez utiliser une fenêtre de saisie de données pour permettre à l'utilisateur de saisir du texte, un nombre ou une plage de valeurs. Pour créer une fenêtre de saisie, il existe deux fonctions InputBox : une en VBA et la seconde est une méthode de l'objet Application.

Fonction InputBox dans VBA

La fonction a la syntaxe suivante :

InputBox(requête [, titre] [, par défaut] [, xpos] [, ypos] [, aide, section])

  • xpos, ypos. Définit les coordonnées du coin supérieur gauche de la fenêtre de saisie à l'écran (paramètres facultatifs).

La fonction InputBox invite l'utilisateur à saisir une seule valeur. Il renvoie toujours une chaîne, le résultat devra donc être converti en valeur numérique. Le texte affiché dans la fenêtre de saisie peut contenir jusqu'à 1024 caractères (la longueur peut être modifiée en fonction de la largeur des caractères utilisés). Si vous définissez une rubrique d'aide, la boîte de dialogue affichera un bouton Référence.

La procédure GetName demande le nom complet de l'utilisateur (prénom et nom). Le programme met ensuite en surbrillance le nom et affiche un message d'accueil dans une boîte de message (voir Figure 1 ; le code de fonction se trouve dans le fichier VBAzone de saisie.xlsm).

Sub GetName() Dim UserName As String Dim FirstSpace As Integer jusqu'à ce que UserName<>"" UserName = InputBox("Entrez votre prénom et votre nom : ", _ "Présentez-vous") Loop FirstSpace = InStr(UserName, " ") If FirstSpace<>0 Then UserName = Left (UserName, FirstSpace - 1) End If MsgBox "Bonjour" & UserName End Sub

Sous GetName()

Dim Nom d'utilisateur en tant que chaîne

Dim FirstSpace comme entier

Faire jusqu'au nom d'utilisateur<> ""

Nom d'utilisateur = Boîte d'entrée ( « Insérez votre nom et prénom : », _

"Nommez-vous")

Boucle

PremierEspace = InStr(NomUtilisateur, " ")

Si PremierEspace<>0 Alors

Nom d'utilisateur = Gauche (Nom d'utilisateur, FirstSpace - 1)

Fin si

MsgBox "Bonjour" et nom d'utilisateur

Fin du sous-marin

Notez que la fonction InputBox est appelée dans une boucle Do Until. Cela vous permet de vérifier que les données ont été saisies dans la fenêtre. Si l'utilisateur clique sur le bouton Annuler ou ne saisit pas de texte, la variable UserName contiendra une chaîne vide et la fenêtre de saisie de données réapparaîtra. Ensuite, la procédure tentera d'obtenir le nom d'utilisateur en recherchant le premier caractère espace (en utilisant la fonction InStr pour ce faire). Ainsi, vous pouvez utiliser la fonction Left pour obtenir tous les caractères à gauche du caractère espace. Si aucun espace n'est trouvé, l'intégralité du nom saisi est utilisée.

Si la chaîne fournie comme résultat de la fonction InputBox ressemble à un nombre, elle peut être convertie à l'aide de la fonction VBA Val.

Dans la procédure GetWord, l'utilisateur est invité à saisir le mot manquant (Fig. 2). Cet exemple illustre également l'utilisation d'arguments nommés ( R. Et t). Le texte de la requête est sélectionné dans la cellule A1 de la feuille de calcul.

Sub GetWord() Dim TheWord As String Dim p As String Dim t As String p = Range("A1") t = "Quel mot manque ?" TheWord = InputBox(prompt:=p, Title:=t) Si UCase(TheWord) = "WATER PUMP" Alors MsgBox "Correct." Sinon, MsgBox "Incorrect". Fin si fin du sous-marin

Sous GetWord()

Dim TheWord sous forme de chaîne

Dim p comme chaîne

Dim t comme chaîne

p = Plage("A1")

t = "Quel mot manque-t-il ?"

TheWord = InputBox (invite : = p , Titre : = t )

Si UCase (TheWord) = "WATER POWER" Alors

MsgBox « Correct ».

Autre

MsgBox « Incorrect ».

Fin si

Fin du sous-marin

Riz. 2. Utilisation de la fonction VBA inputBox affichant une requête

Méthode Excel InputBox

La méthode Excel InputBox offre trois avantages par rapport à la fonction VBA InputBox :

  • possibilité de définir le type de valeur de retour ;
  • la possibilité de spécifier une plage de feuilles en sélectionnant avec la souris ;
  • vérification automatique de l'exactitude des données saisies.

La méthode InputBox a la syntaxe suivante.

InputBox (requête, [, titre], [, par défaut], [, gauche], [, haut], [, aide, section], [, type])

  • Demande. Spécifie le texte à afficher dans la fenêtre de saisie (obligatoire).
  • Titre. Définit le titre de la fenêtre de saisie (facultatif).
  • Défaut. Définit la valeur affichée par défaut dans la fenêtre de saisie (facultatif).
  • En haut à gauche. Définit les coordonnées du coin supérieur gauche de la fenêtre de saisie à l'écran (paramètres facultatifs).
  • Aide, rubrique. Spécifie le fichier et la rubrique dans le système d'aide (paramètres facultatifs).
  • Taper. Spécifie le code de type de données qui sera renvoyé par la méthode (paramètre facultatif ; voir la figure 3 pour les valeurs).

Riz. 3. Codes de type de données renvoyés par la méthode Excel InputBox

En utilisant la somme des valeurs ci-dessus, plusieurs types de données peuvent être renvoyés. Par exemple, pour afficher une fenêtre de saisie acceptant un type de données texte ou numérique, définissez le code sur 3 (1 + 2 ou nombre + texte). Si vous utilisez la valeur 8 comme code de type de données, l'utilisateur peut saisir l'adresse d'une cellule ou d'une plage de cellules dans le champ. L'utilisateur peut également sélectionner une plage dans la feuille de calcul actuelle.

La procédure EraseRange utilise la méthode InputBox. L'utilisateur peut spécifier la plage à supprimer (Fig. 4). L'adresse de plage est saisie manuellement dans la fenêtre ou sélectionnée avec la souris sur la feuille. Le code de méthode InputBox 8 renvoie un objet Range (notez le mot clé Set). Après cela, la plage sélectionnée est effacée (en utilisant la méthode Clear). Par défaut, l'adresse de la cellule actuellement sélectionnée est affichée dans le champ de la fenêtre de saisie. Si vous cliquez sur le bouton dans la fenêtre de saisie Annuler, l'instruction On Error mettra fin à la procédure.

Sub EraseRange() Dim UserRange As Range On Error GoTo Canceled Set UserRange = Application.InputBox _ (Prompt:="Plage à supprimer :", _ Title:="Suppression d'une plage", _ Default:=Selection.Address, _ Tapez := 8) UserRange.Clear UserRange.Select Annulé : Fin du sous-marin

Riz. 4. Exemple d'utilisation de la méthode InputBox pour sélectionner une plage

Si vous saisissez une plage d'adresses hors plage dans la procédure EraseRange, Excel affichera un message (Figure 5) et permettra à l'utilisateur de répéter la saisie des données.

Riz. 5. La méthode InputBox valide automatiquement les données d'entrée

Fonction VBA MsgBox

La fonction VBA MsgBox permet d'afficher un message. Il rapporte également le résultat du clic sur le bouton OK ou Annuler.) Syntaxe de la fonction :

MsgBox(requête[, boutons][, titre][, aide, section])

  • Demande. Définit le texte qui sera affiché dans la boîte de message (obligatoire).
  • Boutons. Contient une expression numérique (ou constante) qui détermine les boutons affichés dans la boîte de message (paramètre facultatif ; Figure 6). Vous pouvez également définir un bouton par défaut.
  • Titre. Contient le titre de la boîte de message (facultatif).
  • Aide, rubrique. Spécifie le fichier d'aide et la rubrique (paramètres facultatifs).

Riz. 6. Constantes et valeurs utilisées pour sélectionner les boutons dans la fonction MsgBox

Le premier groupe de valeurs (0 à 5) décrit le nombre et le type de boutons dans la boîte de dialogue. Le deuxième groupe (16, 32, 48, 64) décrit le style de l'icône. Le troisième groupe (0, 256, 512) détermine quel bouton est attribué par défaut. Le quatrième groupe (0, 4096) détermine la modalité de la fenêtre de message. Le cinquième spécifie s'il faut afficher la boîte de message au-dessus des autres fenêtres et définit l'alignement et la direction du texte. Lorsque vous ajoutez des nombres pour obtenir la valeur finale de l'argument Buttons, vous ne devez utiliser qu'un seul nombre de chaque groupe.

Vous pouvez utiliser la fonction MsgBox comme procédure (pour afficher un message) et vous pouvez également affecter la valeur de retour de la fonction à une variable. La fonction MsgBox renvoie un résultat représentant le bouton sur lequel l'utilisateur a cliqué. L'exemple suivant affiche un message et ne renvoie pas de résultat (voir aussi le code des fonctions de cette section dans le fichier VBAmsgbox.xlsm).

Sub MsgBoxDemo() MsgBox "Aucune erreur ne s'est produite lors de l'exécution de la macro." Fin du sous-marin

Pour obtenir le résultat d'une boîte de message, affectez la valeur renvoyée par la fonction MsgBox à une variable. Le code suivant utilise un certain nombre de constantes intégrées (Figure 7) qui facilitent le contrôle des valeurs renvoyées par la fonction MsgBox.

Sub GetAnswer() Dim Ans As Integer Ans = MsgBox("Continue?", vbYesNo) Select Case Ans Case vbYes " ... [le code pour Ans est Oui] Case vbNo " ... [le code pour Ans est Non] End Select Fin du sous-marin

Riz. 7. Constantes renvoyées par MsgBox

La fonction MsgBox renvoie une variable de type Integer. Vous n'avez pas besoin d'utiliser une variable pour stocker le résultat de la fonction MsgBox. La procédure suivante est une variante de la procédure GetAnswer.

Sub GetAnswer2() If MsgBox("Continue?", vbYesNo) = vbYes Then " ... [code pour Ans est égal à Oui] Else " ... [code pour Ans est égal à Non] End If End Sub

L'exemple de fonction suivant utilise une combinaison de constantes pour afficher une boîte de message avec des boutons Oui, Non et un point d'interrogation (Figure 8). Deuxième bouton ( Non) est la valeur par défaut. Pour plus de simplicité, des constantes ont été ajoutées à la variable Config.

Fonction privée ContinueProcedure() As Boolean Dim Config As Integer Dim Ans As Integer Config = vbYesNo + vbQuestion + vbDefaultButton2 Ans = MsgBox("Une erreur s'est produite. Continuer?", Config) Si Ans = vbYes Then ContinueProcedure = True _ Else ContinueProcedure = False Fonction de fin

Riz. 8. Paramètre Boutons Les fonctions MsgBox définissent les boutons affichés dans la boîte de message

Dans le fichier VBAmsgbox.xlsm La fonction ContinueProcedure est représentée comme une procédure à des fins de démonstration. La fonction ContinueProcedure peut être appelée depuis une autre procédure. Par exemple, l'opérateur

Si ce n'est pas le cas, ContinueProcedure(), quittez Sub

appelle la fonction ContinueProcedure (qui affiche une boîte de message). Si la fonction renvoie FALSE (c'est-à-dire que l'utilisateur a cliqué sur le bouton Non), la procédure sera alors terminée. Sinon, l'instruction suivante est exécutée.

Si vous devez indiquer un saut de ligne dans le message (Fig. 9), utilisez la constante vbCrLf (ou vbNewLine) :

Sub MultiLine() Dim Msg As String Msg = "Ceci est la première ligne." & vbCrLf & vbNewLine Msg = Msg & "Deuxième ligne." & vbCrLf Msg = Msg & "Troisième ligne". MsgBox Msg Fin Sous

Sous MultiLigne()

Dim Msg sous forme de chaîne

Message = "C'est la première ligne."& vbCrLf & vbNouvelleLigne

Msg = Msg & "Deuxième ligne". &vbCrLf

Msg = Msg & "Troisième ligne".

MsgBox Msg

Fin du sous-marin

Riz. 9. Diviser un message en plusieurs lignes

Pour inclure un caractère de tabulation dans un message, utilisez la constante vbTab. Dans la procédure ShowRange, une boîte de message est utilisée pour afficher une plage de valeurs mesurant 10 lignes sur 3 colonnes - cellules A1 : C10 (Fig. 10). Dans ce cas, les colonnes sont séparées à l'aide de la constante vbTab. De nouvelles lignes sont insérées à l'aide de la constante vbCrLf. La fonction MsgBox prend en paramètre une chaîne dont la longueur ne dépasse pas 1023 caractères. Cette longueur définit une limite sur le nombre de cellules pouvant être affichées dans un message.

Sub ShowRange() Dim Msg As String Dim r As Integer, c As Integer Msg = "" Pour r = 1 à 10 Pour c = 1 à 3 Msg = Msg & Cells(r, c).Text If c<>3 Puis Msg = Msg & vbTab Suivant c Msg = Msg & vbCrLf Suivant r MsgBox Msg End Sub

Sous ShowRange()

Dim Msg sous forme de chaîne

Dim r Comme entier , c Comme entier

Message = ""

Pour r = 1 à 10

Pour c = 1 à 3

Msg = Msg et cellules (r , c ) . Texte

Si c<>3 Puis Msg = Msg & vbTab

Suivant c

Msg = Msg & vbCrLf

Suivant r

MsgBox Msg

Fin du sous-marin

Riz. 10. Le texte de cette boîte de message contient des tabulations et des sauts de ligne

Méthode Excel GetOpenFilename

Si votre application a besoin d'obtenir un nom de fichier de l'utilisateur, vous pouvez utiliser la fonction InputBox, mais cette approche entraîne souvent des erreurs. Il est plus fiable d'utiliser la méthode GetOpenFilename de l'objet Application, qui permet de s'assurer que l'application a reçu le bon nom de fichier (ainsi que son chemin complet). Cette méthode permet d'afficher une boîte de dialogue standard Ouvrir un document, mais le fichier spécifié ne s'ouvre pas. Au lieu de cela, la méthode renvoie une chaîne contenant le chemin et le nom du fichier sélectionnés par l'utilisateur. À la fin de ce processus, vous pouvez faire ce que vous voulez avec le nom du fichier. Syntaxe (tous les paramètres sont facultatifs) :

Application.GetOpenFilename (file_filter, filter_index, titre, multiple_select)

  • Filtre_fichier. Contient une chaîne définissant les critères de filtrage des fichiers (paramètre facultatif).
  • Filtre_index. Spécifie le numéro d'index du critère de filtrage de fichiers par défaut (paramètre facultatif).
  • Titre. Contient le titre de la boîte de dialogue (facultatif). Si ce paramètre n'est pas précisé, l'en-tête sera utilisé Ouvrir un document.
  • Sélection_multiple. Paramètre facultatif. Si c'est VRAI, plusieurs noms de fichiers peuvent être sélectionnés. Le nom de chaque fichier est entré dans un tableau. Par défaut, ce paramètre est défini sur FALSE.

L'argument FileFilter spécifie le contenu de la liste déroulante Type de fichier situé dans la fenêtre Ouvrir un document. L'argument consiste en une chaîne spécifiant la valeur à afficher, plus une chaîne de spécification du type de fichier contenant les caractères génériques. Les deux éléments d'argument sont séparés par des virgules. Si cet argument n'est pas précisé, la valeur par défaut sera utilisée : " Tous les fichiers (*.*),*.* " . La première partie de la ligne Tous les fichiers (*.*) est le texte affiché dans la liste déroulante des types de fichiers. La deuxième partie de la ligne *.* indique le type de fichiers à afficher.

Les instructions suivantes attribuent à la variable Filt une valeur de chaîne. Cette chaîne est ensuite utilisée comme argument file_filter de la méthode GetOpenFilename. Dans ce cas, la boîte de dialogue offrira à l'utilisateur la possibilité de sélectionner l'un des quatre types de fichiers (à l'exception de l'option Tous les fichiers). Si vous définissez la variable Filt sur une valeur, l'opérateur de concaténation de chaînes VBA sera utilisé. Cette méthode facilite la gestion des arguments lourds et complexes.

Filt = "Fichiers texte (*.txt),*.txt," & _ "Fichiers Lotus (*.prn),*.prn," & _ "Fichiers séparés par des virgules (*.csv),*.csv," & _ "Fichiers ASCII (*.asc),*.asc," & _ "Tous les fichiers (*.*),*.*"

L'exemple suivant demande à l'utilisateur un nom de fichier. Dans ce cas, cinq filtres sont utilisés dans le champ type de fichier (le code est contenu dans le fichier demander le fichier.xlsm).

Sub GetImportFileName() Dim Filt As String Dim FilterIndex As Integer Dim FileName As Variant Dim Title As String " Configuration de la liste de filtres Filt = "Fichiers texte (*.txt),*.txt," & _ "Fichiers Lotus (*. prn),*.prn," & _ "Fichiers séparés par des virgules (*.csv),*.csv," & _ "Fichiers ASCII (*.asc),*.asc", & _ "Tous les fichiers (*.* ), *.*" " Affiche *.* par défaut FilterIndex = 3 " Paramètre du titre de la boîte de dialogue Title = "(!LANG : Sélectionner le fichier à importer" " Получение имени файла FileName = Application.GetOpenFilename _ (FileFilter:=Filt, _ FilterIndex:=FilterIndex, _ Title:=Title) " При отмене выйти из окна If FileName = False Then MsgBox "Файл не выбран." Exit Sub End If " Отображение полного имени и пути MsgBox "Вы выбрали " & FileName End Sub!}

Sous GetImportFileName()

Filtrer en tant que chaîne

Dim FilterIndex sous forme d'entier

Dim FileName comme variante

Faible titre sous forme de chaîne

" Configuration de la liste de filtres

Filt = "Fichiers texte (*.txt),*.txt", & _

"Fichiers Lotus (*.prn),*.prn", & _

"Fichiers séparés par des virgules (*.csv),*.csv," & _

"Fichiers ASCII (*.asc),*.asc", & _

"Tous les fichiers (*.*),*.*"

" Affiche * . * par défaut

Indice de filtre = 3

"Personnalisation du titre de la boîte de dialogue

Titre = "(!LANG : Sélectionner le fichier à importer" !}

"Obtenir le nom du fichier

Nom du fichier = Application. GetOpenFilename_

(FileFilter : = Filt, _

FiltreIndex : = FiltreIndex , _

Titre: = Titre)

"En cas d'annulation, quittez la fenêtre

Si FileName = False Alors

MsgBox "Aucun fichier sélectionné."

Quitter le sous-marin

Fin si

" Affichage du nom de chemin complet

Boîte de message"Tu as choisi"& Nom de fichier

FinSous

En figue. La figure 11 montre la boîte de dialogue qui apparaît après avoir effectué cette procédure (le filtre par défaut est *.csv).

Riz. 11. La méthode GetOpenFilename affiche une boîte de dialogue dans laquelle un fichier est sélectionné

Dans l'exemple suivant, l'utilisateur peut maintenir enfoncées les touches Et , sélectionnez plusieurs fichiers dans la fenêtre. Veuillez noter que l'événement d'utilisation du bouton Annuler déterminé par la présence de la variable de tableau FileName. Si l'utilisateur ne clique pas sur le bouton Annuler, alors le tableau résultant sera composé d'au moins un élément. Dans cet exemple, une liste des fichiers sélectionnés s'affiche dans une boîte de message.

Sub GetImportFileName2() Dim Filt As String Dim FilterIndex As Integer Dim FileName As Variant Dim Title As String Dim i As Integer Dim Msg As String " Définir la liste des filtres de fichiers Filt = "Fichiers texte (*.txt),*.txt, " & _ "Fichiers Lotus (*.prn),*.prn," & _ "Fichiers séparés par des virgules (*.csv),*.csv," & _ "Fichiers ASCII (*.asc),*.asc," & _ "Tous les fichiers (*.*),*.*" " Affiche *.* par défaut FilterIndex = 5 " Paramètre du titre de la boîte de dialogue Titre = "(!LANG : Sélectionner le fichier à importer" " Получение имени файла FileName = Application.GetOpenFilename _ (FileFilter:=Filt, _ FilterIndex:=FilterIndex, _ Title:=Title, _ MultiSelect:=True) " Выход в случае отмены работы с диалоговым окном If Not IsArray(FileName) Then MsgBox "Файл не выбран." Exit Sub End If " Отображение полного пути и имени файлов For i = LBound(FileName) To UBound(FileName) Msg = Msg & FileName(i) & vbCrLf Next i MsgBox "Было выбрано:" & vbCrLf & Msg End Sub!}

Notez que la variable FileName est définie comme un tableau de type variable (et non comme une chaîne dans l'exemple précédent). La raison en est que FileName pourrait potentiellement contenir un tableau de valeurs plutôt qu'une seule chaîne.

Méthode Excel GetSaveAsFilename

Cette méthode affiche une boîte de dialogue Enregistrer un document et donne à l'utilisateur la possibilité de sélectionner (ou de spécifier) ​​le nom du fichier enregistré. En conséquence, le nom du fichier est renvoyé, mais aucune action n'est entreprise. Syntaxe (tous les paramètres sont facultatifs) :

Application.GetSaveAsFilename (nom_début, filtre_fichier, index_filtre, titre, texte_bouton)

  • Nom initial. Spécifie le nom de fichier attendu.
  • Filtre_fichier. Contient des critères de filtrage pour les fichiers affichés dans la fenêtre.
  • Filtre_index. Code de critère de filtrage de fichiers utilisé par défaut.
  • Titre. Définit le texte du titre de la boîte de dialogue.

Obtenir le nom du dossier

Pour obtenir le nom du fichier, le moyen le plus simple consiste à utiliser la méthode GetOpenFileName décrite ci-dessus. Mais si vous avez uniquement besoin d'obtenir le nom du dossier (sans le nom du fichier), il est préférable d'utiliser la méthode objet Excel FileDialog. La procédure suivante affiche une boîte de dialogue dans laquelle vous pouvez sélectionner un dossier (voir aussi fichier obtenir le répertoire.xlsm). La fonction MsgBox affiche le nom du dossier sélectionné (ou le message Annulé).

Autre

Boîte de message. Éléments sélectionnés(1 )

FinSi

FinAvec

FinSous

L'objet FileDialog permet de spécifier le dossier initial en spécifiant la valeur de la propriété InitialFileName. L'exemple utilise le chemin du fichier Excel par défaut comme dossier de départ.

Affichage des boîtes de dialogue Excel

Le code VBA que vous écrivez peut appeler de nombreuses commandes Excel trouvées sur le ruban. Et si une commande ouvre une boîte de dialogue, votre code peut effectuer des sélections dans la boîte de dialogue (même si la boîte de dialogue elle-même n'est pas affichée). Par exemple, l'instruction VBA suivante est équivalente à la commande select maison –> Édition –> Rechercher et mettre en évidence –> Aller et en spécifiant la plage de cellules A1:NW, puis en cliquant sur le bouton OK. Mais la boîte de dialogue elle-même Transition il n'est pas affiché (c'est exactement ce qu'il faut).

Application.Goto Reference:=Range(" A1:NW ")

Parfois, vous devez afficher des fenêtres Excel intégrées pour que l'utilisateur puisse faire son choix. Cela se fait à l'aide de la collection Dialogs de l'objet Application. Veuillez noter que Microsoft ne prend plus en charge cette fonctionnalité. Dans les versions précédentes d'Excel, les menus et barres d'outils personnalisés étaient créés à l'aide de l'outil Barre de commande. Dans Excel 2007 et Excel 2010, cet objet est toujours disponible, même s'il ne fonctionne pas aussi bien qu'avant. À partir d'Excel 2007, les capacités des objets Barre de commande ont été considérablement élargis. En particulier, l'objet Barre de commande peut être utilisé pour appeler des commandes du ruban à l'aide de VBA. La plupart des commandes accessibles à partir du ruban affichent une boîte de dialogue. Par exemple, l'instruction suivante affiche une boîte de dialogue Afficher une feuille cachée(Fig. 12 ; voir aussi le fichier noms de contrôle du ruban.xlsm):

Application.CommandBars.ExecuteMso(" SheetUnhide ")

Riz. 12. Boîte de dialogue affichée à la suite de l'exécution de l'instruction ci-dessus

La méthode ExecuteMso prend un seul argument, idMso, qui représente le contrôle ruban. Malheureusement, les informations sur de nombreux paramètres ne sont pas disponibles dans le système d'aide.

Dans le fichier noms de contrôle du ruban.xlsm Tous les noms des paramètres de commande du ruban Excel sont décrits. Expérimentez avec les options répertoriées dans ce classeur. Beaucoup d'entre eux appellent des commandes immédiatement (sans boîtes de dialogue intermédiaires). Mais la plupart d’entre eux génèrent une erreur lorsqu’ils sont utilisés dans le mauvais contexte. Par exemple, Excel affiche un message d'erreur si la commande Functionwizard est appelée alors qu'un graphique est sélectionné.

Suite à l'exécution de l'instruction suivante, un onglet s'affiche Police de caractère boite de dialogue Format de cellule:

Application.CommandBars.ExecuteMso(" FormatCellsFontDialog ")

Vous ne devriez vraiment pas utiliser les objets CommandBar car il est peu probable qu'ils soient pris en charge dans les futures versions d'Excel.

Affichage du formulaire de saisie des données

De nombreuses personnes utilisent Excel pour gérer des listes organisant les informations en lignes. Excel offre un moyen simple de travailler avec ces types de données en utilisant des formulaires de saisie de données intégrés qui peuvent être créés automatiquement. Ce formulaire est conçu pour fonctionner à la fois avec une plage normale et une plage formatée sous forme de tableau (à l'aide de la commande Insérer –> les tables –> Tableau). Un exemple de formulaire de saisie de données est présenté dans la Fig. 13 (voir aussi dossier exemple de formulaire de données.xlsm).

Riz. 13. Certains utilisateurs préfèrent utiliser les formulaires de saisie de données intégrés à Excel pour saisir des informations ; Pour agrandir l'image, faites un clic droit dessus et sélectionnez Ouvrir l'image dans un nouvel onglet

Pour une raison inconnue, aucune commande sur le ruban Excel ne permet d'accéder au formulaire de saisie de données. Une commande similaire peut être ajoutée à la barre d'outils d'accès rapide. Pour le faire, suivez ces étapes:

  1. Faites un clic droit sur la barre d'outils d'accès rapide et sélectionnez l'option dans le menu contextuel Personnalisation de la barre d'outils d'accès rapide.
  2. Un onglet apparaîtra à l'écran Barre d'accès rapide boite de dialogue Options Excel.
  3. Dans la liste déroulante Sélectionnez des équipes parmi sélectionner une option Commandes non enregistrées sur bande.
  4. Sélectionnez une option dans la liste qui apparaît Formulaire.
  5. Cliquez sur le bouton Ajouter pour ajouter la commande sélectionnée à la barre d'outils d'accès rapide.
  6. Cliquez sur OK pour fermer la boîte de dialogue Options Excel.

Après avoir terminé les étapes ci-dessus, une nouvelle icône apparaîtra sur votre barre d'outils d'accès rapide.

Pour travailler avec un formulaire de saisie de données, vous devez structurer les données de manière à ce qu'Excel les reconnaisse comme un tableau. Commencez par spécifier les en-têtes de colonnes sur la première ligne de votre plage de saisie. Sélectionnez n'importe quelle cellule du tableau et cliquez sur le bouton Formulaire panneaux d'accès rapide. Excel affiche une boîte de dialogue dans laquelle vous saisirez des données. Pour vous déplacer entre les champs de texte et saisir des informations, utilisez la touche . Si une cellule contient une formule, le résultat du calcul est affiché sous forme de texte (plutôt que sous forme de champ de saisie de données). En d’autres termes, il n’est pas possible de modifier les formules à l’aide du formulaire de saisie.

Lorsque vous avez terminé de saisir les données dans le formulaire, cliquez sur le bouton Créer. Excel entre ensuite les données dans la ligne de la feuille de calcul et efface également la boîte de dialogue pour saisir la ligne de données suivante.

Utilisez la méthode ShowDataForm pour afficher un formulaire de saisie de données Excel. La seule exigence est que la cellule active soit dans la plage. Le code suivant active la cellule A1 (dans le tableau) puis affiche le formulaire de saisie de données.

mob_info