2012-01-31 5 views
1

Existe-t-il une méthode/propriété que je pourrais utiliser pour obtenir un tableau de chaînes d'éléments sélectionnés de la gamme?Obtenir toutes les coordonnées de cellules pour un Microsoft.Office.Interop.Excel.Range

Dans l'exemple:
La gamme $B$2:$C$3 donnerait un tableau de chaînes avec les valeurs suivantes: $B$2 $B$3 $C$2 $C$3

EDIT ::
J'ai trouvé la réponse à ma question sur this post.
En fait, j'ai besoin pour utiliser la procédure suivante:

foreach (Range c in myRange) 
    { 
     string changedCell = c.get_Address(
      Type.Missing, Type.Missing, 
      XlReferenceStyle.xlA1, 
      Type.Missing, Type.Missing 
     ); 
     MessageBox.Show("Address:" + changedCell + " Value: " + c.Value2); 
    } 

Répondre

1

AFAIK, il n'y a pas une propriété ca n donner des adresses de cellules d'une plage donnée dans le format, vous attendez.

Voici le code VBA pour obtenir ce que vous cherchez

Function GetCellAddresses(ByVal srcRange As Range) As Variant 
Dim cellAddresses As Variant 

Dim cellCtr As Long 
Dim cellCount As Long 

Dim cell As Range 

If Not srcRange Is Nothing Then 
    cellCtr = 1 
    cellCount = srcRange.Cells.Count 
    ReDim cellAddresses(1 To cellCount) 

    For Each cell In srcRange.Cells 
     cellAddresses(cellCtr) = cell.Address 
     cellCtr = cellCtr + 1 
    Next 
End If 

GetCellAddresses = cellAddresses 
End Function 

Pour appeler ce qui précède, GetCellAddresses(sheet1.Range("A1:B3"))

EDIT: En utilisant LINQ, cela peut devenir 1 ou 2 doublure.
Par exemple. var cellAddresses = srcRange.Select(c => c.Address);

OU

from cell in srcRange select cell.Address

-2

Il n'y a pas seulement une méthode pour tout faire pour vous, et en donnant un tableau pour vous Voici la procédure que vous devriez aller: construire un tableau vide make une boucle for pour chaque colonne à partir de la colonne de la première cellule jusqu'à ce que vous obteniez la dernière dans votre plage dans chaque colonne utilisez une boucle imbriquée trop itérer dans le dernier élément de la colonne ajoutez chaque élément à votre matrice

c'est l'idée qui a fonctionné

Questions connexes