premier message ici désolé si le formatage est vraiment mauvais. Besoin d'aide avec un fichier Excel VBA sur lequel je travaille. Le code est ci-dessous et une description ci-dessous. Toute aide serait appréciéeVBA Excel .Range syntaxe et comparateurs
Sub Main()
' Declare all variables
Dim LastRow As Long
Dim x As Long
Dim y As Long
Dim Date1 As Date
Dim Date2 As Date
Dim prod As String
Dim Add As Integer
Dim var1 As Integer
Dim var2 As Integer
Dim ProdString As String
'Calculate the number of rows in the sheet, then run a for loop for every row.
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To LastRow
y = x
'concatenate the current row number (x) and third column to a string (prod string), then check to see what letter is in that cell.
'Assign a letter to concatenate with variable 'x' to String Prod for the .Range Function
ProdString = x & 3
**If Range(ProdString).Value = "I" Then**
prod = "K"
ElseIf Application.ActiveSheet.Range(ProdString).Value = "E" Then
prod = "L"
ElseIf Application.ActiveSheet.Range(ProdString).Value = "O" Then
prod = "M"
ElseIf Application.ActiveSheet.Range(ProdString).Value = "Q" Then
prod = "N"
Else: prod = "O"
End If
' Add two numbers together in two different cells and assign to the second cell
var1 = Application.ActiveSheet.Range("D" & x).Value
var2 = Application.ActiveSheet.Range("prod" & x).Value
Add = var1 + var2
Application.ActiveSheet.Range("prod" & x).Value = Add
'While Loop to go through applicable date range from starting date to end date and add to those columns
Do While True
Date1 = Application.ActiveSheet.Range(y, 6).Value
Date2 = Application.ActiveSheet.Range(y + 1, 6).Value
If Application.ActiveSheet.Range(y, 7).Value <> Application.ActiveSheet.Range(y + 1, 7) Then Exit Do
If Date1 < Date2 Then Exit Do
var1 = Range("D" & x).Value
var2 = Range("prod" & y).Value
Add = var1 + var2
Range("prod" & y).Value = Add
y = y + 1
Loop
Next x
End Sub
Le fichier Excel Je travaille avec un classeur, sur une feuille avec 10k lignes et 15 colonnes. J'essaye d'ajouter un nombre dans une colonne à l'autre basé sur des dates. Mais le problème actuel que je suis essaie juste de comprendre la fonction .Range Bolded et pourquoi cela ne fonctionnera pas. J'ai essayé de le précéder avec le classeur et le nom de page spécifiques mais j'ai des erreurs de portée globale quand je le fais. Je veux juste comparer ce qui est à l'intérieur de la cellule à la plage spécifiée, et s'il s'agit d'une certaine chaîne, attribuez une valeur à une valeur de chaîne différente. Merci.
Vous regardez PodString, qui est une chaîne, tout en essayant d'utiliser cela comme une plage. Vous aurez besoin de définir la plage dans laquelle vous voulez travailler. Exemple, si PodString = fdsa, alors Range ("fdsa") ferait une erreur; si PodString était une plage et = Range ("A2: B2"), alors Range (PodString) = Range ("A2: B2"). – Cyril
Aussi, lorsque vous démarrez votre sous-marin, vous avez déclaré 'X' mais vous ne lui avez jamais donné de valeur. Pourquoi même utiliser 'x'? Que voulez-vous dire par 'Range (podString)'? Ça va être un nombre unique, non? Comme 'Range (3)'? – BruceWayne
@BruceWayne J'ai une réponse avec une liste de questions plus importante ... dans l'espoir d'obtenir du code après que l'intention soit devenue plus claire. C'est ... assez approximatif pour extrapoler l'intention des variables. – Cyril