-1
votes

Table automatique basée sur UserForm, lorsque les données proviennent de l'autre feuille

Je voudrais obtenir le résultat dans la table, où les données proviennent de ma formal utilisateur.

La colonne H comprend la somme de la colonne g de ma feuille de calcul active et de la carte de colonne de ma feuille de calcul externe, qui est "Formulas". . P>

 Entrez la description de l'image ici p>

J'ai le formal user, de remplir toute la ligne de la table dans la table lorsque je saisi certaines données dans cette référence.

La colonne H ne sera pas entrée directement à partir de laformerform, car elle inclut la formule mentionnée ci-dessus. p>

Je souhaite une colonne de population automatique, lors de la saisie de la colonne adjacente G et En outre, la colonne l. p>

Cette auto-population doit être basée sur la formule décrite ci-dessus, où la feuille de la colonne de la feuille "Formules" est basée sur l'instruction IF comme indiqué dans l'image ci-dessous. Cette instruction est liée à la colonne L depuis ma feuille de calcul active, déterminer les gammes de valeur entier. P>

 Entrez la description de l'image ici p>

à cet effet, je Utilisé le code suivant pour effectuer l'entrée de mon userForm. Modifier plus loin en insérant la solution potentielle à la colonne H Auto-population susmentionnée. P>

lastrowAD = wks.Range("AD" & ListIndex + 1)
AppendToColumn wks, "H", ("=G" & lastrowG & " + Formulas!AD" & lastrowAD)


12 commentaires

Toujours mettre option explicite en haut de chaque module. Déclarez toutes vos variables. Vous n'avez pas déclaré DIM LISTINDEX comme long n'importe où. C'est ce que signifie l'erreur.


Dans votre deuxième exemple, vous passez deux variables à un substitut qui nécessite trois, aussi une erreur très claire.


Votre indice était bon, mais il manque encore quelque chose ici. J'ai mis à jour la requête, vous pouvez voir.


Lastrowad est déclaré depuis longtemps mais vous avez attribué un objet de gamme. C'est en effet une inadéquation de type. Qu'essayez-vous de faire?


J'essaie de renseigner la colonne H en fonction de la formule G + AD, alors que l'AD est basée sur les différentes feuilles. Tous fonctionnent sur la même base, une fois que je me remplis le formulaire, la ligne suivante se remplit.


Pourriez-vous m'aider? J'en ai besoin aujourd'hui? Merci beaucoup!


Non, cette question est partout. Ce n'est pas clair ce que votre problème est à ce stade. J'ai déjà résolu plusieurs problèmes et vous continuez à demander plus de questions. Ce site n'est pas un forum. C'est un site de questions / réponses sur lequel vous posez une question, une question claire et une réponse claire. Pour éviter la frustration, veuillez lire ce guide: Stackoverflow.com/help/how-to-ask


Je pose toujours une question claire, qui inclut le code, l'image et le problème. Je ne comprends pas pourquoi tu ne peux pas avoir mon point. Le problème est clair de mon point de vue. J'ai besoin de la somme valide de deux colonnes, où l'une est basée sur la feuille active et une autre sur la feuille externe. Chaque question pourrait aider les descendants, qui visiteront ce site Web, donc je ne comprendra donc pas où le problème est.


Sauf que vous avez énuméré deux erreurs dans votre message d'origine, les deux ont été résolus. Une question, une réponse. Si vous avez une nouvelle question, vous devriez poser une nouvelle question.


Non, c'est toujours le même problème. J'ai juste essayé seulement de faire une formule venant de ma feuille active au lieu d'un externe. En conséquence, j'ai eu la formule = G15 + S0. Je sais que la politique de ce site est Q &a et je fais de mon mieux pour y coller. Je ne mettant à jour que mes questions, lorsque vous voyez des approches similaires au même problème.


@HacksLash j'ai reconstruit cette question totalement. Maintenant, il devrait correspondre aux directives "Comment demander" et être plus précise pour quiconque.


SET WKS = CEDWORKBOOKE.SHEets ("Tracker") ET ENCORE SET WKS = THEWORKBOOK.CHEFE ("Formulas") ?? .. c'est l'erreur.


3 Réponses :


1
votes

Le code SNIP que vous avez affiché ne compile pas. Cela vous aidait très difficile. Assurez-vous de publier uniquement le code minimum requis pour reproduire le problème que vous rencontrez. Lastrowad n'est pas déclaré. Vous devez mettre option explicite code> en haut de chaque module. Cela vous oblige à déclarer toutes vos variables. Lorsque vous contrôlez le type de chaque variable, vous ne recevrez plus de macmatches de type.

Je peux dire par votre usage que Lastrowad code> est long. Vous attribuez votre longue avec un objet de gamme. C'est en effet une inadéquation de type. Si nous faisons ce que votre code dit, je peux obtenir la dernière ligne de l'annonce de la colonne et que cela résoudra le problème. P>

Option Explicit

Private Sub CommandButton1_Click()
    Dim wks As Worksheet, wkf As Worksheet
    Set wks = ThisWorkbook.Sheets("Tracker")
    Set wks = ThisWorkbook.Sheets("Formulas")
    AppendToColumn wks, "A", JobID.Text  'Adds the TextBox3 into Col A & Last Blank Row
    AppendToColumn wks, "B", CoordName.Text
    AppendToColumn wks, "C", PlannerName.Text
    AppendToColumn wks, "D", Surveyor.Text
    AppendToColumn wks, "E", RRGuy.Text
    AppendToColumn wks, "F", DateBox.Text
    AppendToColumn wks, "G", TimeBox.Text
    AppendToColumn wks, "I", AddressBox.Text
    AppendToColumn wks, "J", CityBox.Text
    AppendToColumn wks, "K", PostcodeBox.Text
    AppendToColumn wks, "L", THPBox.Text
    AppendToColumn wks, "M", JointBox.Text

    Dim lastrowG As Long, ListIndex As Long
    Dim lastrowAD As Long
    lastrowG = AppendToColumn(wks, "G", TimeBox.Text)
    lastrowAD = wks.Range("AD" & Rows.CountLarge).End(xlUp).Row
    AppendToColumn wks, "H", ("=G" & lastrowG & " + Formulas!AD" & lastrowAD)

    MsgBox ("All data has been added successfully")
End Sub


2 commentaires

SET WKS = CEDWORKBOOK.SHEets ("Tracker") SET WKS = CEDWORKBOOK.SHIES ("Formulas") Causer l'erreur.


Ce n'est pas la cause de l'erreur de décalage de type, mais vous avez raison de dire qu'il n'ya aucun moyen de dire quelle feuille il veut utiliser où



1
votes

Voici l'erreur. La procédure ne considérera que la dernière SET WKS et donc il n'y a aucune référence à ceworkbook.iche ("suivi") code> dans la procédure. C'est la cause de l'erreur.

Set wks = ThisWorkbook.Sheets("Tracker")
Set wks = ThisWorkbook.Sheets("Formulas")


1 commentaires

Cela ne causerait pas de macalisation de type mais c'est une bonne observation



-2
votes

Je l'ai résolu finalement de cette façon:

 Private Sub CommandButton1_Click()
 Dim wks As Worksheet, wkf As Worksheet
 Dim lastrowG As Long, lastrowL As Long, LastrowH As Long, LastrowS As Long, LastrowAF 
 As Long, LastrowAE As Long, ListIndex As Long
 Set wks = ThisWorkbook.Sheets("Tracker")
 Set wkf = ThisWorkbook.Sheets("Formulas")
AppendToColumn wks, "A", JobID.Text  'Adds the TextBox3 into Col A & Last Blank Row
AppendToColumn wks, "B", CoordName.Text
AppendToColumn wks, "C", PlannerName.Text
AppendToColumn wks, "D", Surveyor.Text
AppendToColumn wks, "E", RRGuy.Text
AppendToColumn wks, "F", DateBox.Text
AppendToColumn wks, "G", TimeBox.Text
'AppendToColumn wks, "H", TimeEndBox.Text
AppendToColumn wks, "I", AddressBox.Text
AppendToColumn wks, "J", CityBox.Text
AppendToColumn wks, "K", PostcodeBox.Text
AppendToColumn wks, "L", THPBox.Text
AppendToColumn wks, "M", JointBox.Text
AppendToColumn wks, "N", FibreBox.Text
AppendToColumn wks, "O", FibreEquipmentBox.Text
AppendToColumn wks, "P", SpareFibreBox.Text

lLastrowG = wks.Range("G" & Rows.Count).End(xlUp).Row
LastrowH = wks.Range("H" & Rows.Count).End(xlUp).Row + 1
LastrowL = wks.Range("L" & Rows.Count).End(xlUp).Row
LastrowAF = wkf.Range("AF" & Rows.Count).End(xlUp).Row + 1

'LastrowAE = Sheets("Formulas").Range("AE" & Rows.Count).End(xlUp).Row + 1
 wkf.Range("AF" & LastrowAF).Formula = _
"=IF(Tracker!L" & lastrowL & "<20,""1:00"",""2:00"")"
'wkf.Range("AE" & LastrowAE).value = ("=Formulas!AD" & LastrowAD)
 wks.Range("H" & LastrowH).value = ("=G" & lastrowG & "+Formulas!AF" & LastrowAF)

MsgBox ("All data has been added successfully")


0 commentaires