2013-08-13 4 views
0

à la recherche d'un peu d'aide ici. J'essaye d'obtenir ma macro pour coller les valeurs des cellules seulement avec l'information à l'intérieur d'elles à une liste. Malheureusement, ma macro tire aussi toutes les cellules vides, mais les colle comme des cellules vides. Est-ce que quelqu'un a une idée de comment faire pour que ma macro ignore complètement les cellules vides? De plus, je suis en train d'avoir cette pâte macro à C38, mais je pense que je pourrais avoir mes références foiré ..Comment ignorer les cellules vides dans la macro

Range("C11").Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = "3" 
Range("C12").Select 
SolverOk SetCell:="$A$20", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$26:$V$29", _ 
    Engine:=2, EngineDesc:="Simplex LP" 
SolverOk SetCell:="$A$20", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$26:$V$29", _ 
    Engine:=2, EngineDesc:="Simplex LP" 
SolverSolve UserFinish:=True 
     iMaxRow = 17 
For iCol = 3 To 21 
For iRow = 1 To iMaxRow 

With Worksheets("Summary").Cells(iRow, iCol) 
    ' Check that cell is not empty. 
    If .Value = "" Then 
     'Nothing in this cell. 
     'Do nothing. 
    Else 
     ' Copy the cell to the destination 
     Worksheets("Summary").Cells(3, 38).Value = .Value 
    End If 
End With 

Next iRow 
Next iCol 

Sheets("Summary").Select 

Répondre

1

pour cette solution:

Sub tgr() 

    Dim ws As Worksheet 
    Dim rIndex As Long 
    Dim cIndex As Long 

    Set ws = Sheets("Summary") 

    Range("C11").Value = "3" 
    SolverOk SetCell:="$A$20", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$26:$V$29", _ 
      Engine:=2, EngineDesc:="Simplex LP" 
    SolverSolve UserFinish:=True 

    For cIndex = Columns("C").Column To Columns("U").Column 
     For rIndex = 1 To 17 
      If Len(Trim(ws.Cells(rIndex, cIndex).Text)) > 0 Then 
       ws.Cells(Rows.Count, "C").End(xlUp).Offset(1).Value = ws.Cells(rIndex, cIndex).Text 
      End If 
     Next rIndex 
    Next cIndex 

    ws.Select 

    Set ws = Nothing 

End Sub 
+0

Ceci est très proche, est-il un moyen de faire référence aux colonnes 2, 6 , 10 et 14? au lieu de 1 à 17 comme vous l'avez mentionné ci-dessus? –

+0

Ce modèle est constitué de quatre colonnes commençant à la colonne 2 (B), vous pouvez donc remplacer la ligne For cIndex par la suivante: 'Pour cIndex = Columns (" B "). Column To Columns (" N "). 'L'étape 4 le fera aller à chaque 4ème colonne – tigeravatar

+0

En outre, le 1 à 17 est les numéros de ligne, pas les numéros de colonne. Vous pouvez modifier le code si nécessaire. – tigeravatar

0

si vous souhaitez enregistrer tout dans la cellule (« C38 ») alors vous devriez utiliser ligne

Worksheets("Summary").Cells(3, 38).Value = Worksheets("Summary").Cells(3, 38).Value + .Value + chr(11) 
+0

Je veux enregistrer les informations dans les cellules individuelles, donc à peu près chaque fois qu'il ya une cellule avec des informations, je veux en C38, la prochaine fois il est l'information, j'aimerais en C39 , etc. Cela a-t-il du sens? –

+0

alors vous pouvez probablement utiliser un compteur: Worksheets ("Résumé"). Cellules (3, 38 + i) .Value = .Value i = i + 1 – eyeinthebrick

Questions connexes