2010-06-01 20 views

Respuesta

0

Bueno, suponiendo que conoce la dirección de una de las celdas del rango resultante de la fusión, sólo podría seleccionar el desplazamiento de ese rango y obtener la fila/columna:

Sub GetMergedRows() 
    Range("A7").Select 'this assumes you know at least one cell in a merged range. 
    ActiveCell.Offset(-1, 0).Select 
    iStartRow = ActiveCell.Row + 1 
    Range("A7").Select 
    ActiveCell.Offset(1, 0).Select 
    iEndRow = ActiveCell.Row - 1 
    MsgBox iStartRow & ":" & iEndRow 
End Sub 

El código anterior arrojará errores si no se puede seleccionar la fila compensada (es decir, si las filas fusionadas son A1 a través de lo que sea), querrá agregar el manejo de errores que le dice al código si no puede compensar, las filas superiores deben ser 1 y si no puede bajar, la fila inferior debe ser 65,536. Este código también tiene una sola dimensión, por lo que es posible que también desee agregar el eje x.

0

Si desea las referencias de celda como cadenas, puede usar algo como esto, donde Location, StartCell y EndCell son variables de cadena.

Location = Selection.Address(False, False) 
Colon = InStr(Location, ":") 
If Colon <> 0 Then 
    StartCell = Left(Location, Colon - 1) 
    EndCell = Mid(Location, Colon + 1) 
End If 

Si desea establecer como rangos, se puede añadir este, donde StartRange y endrange son objetos Range.

set StartRange = Range(StartCell) 
set EndRange = Range (EndCell) 
14
Sub MergedAreaStartAndEnd() 

    Dim rng As Range 
    Dim rngStart As Range 
    Dim rngEnd As Range 

    Set rng = Range("B2") 

    If rng.MergeCells Then 

     Set rng = rng.MergeArea 
     Set rngStart = rng.Cells(1, 1) 
     Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count) 

     MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address 

    Else 

     MsgBox "Not merged area" 

    End If 

End Sub 
+2

También puede hacer 'rng.MergeArea.Address' – Makah

5

A continuación macro pasa a través de todas las hojas de un libro y se encuentra celdas combinadas, ellos unmerge y poner valor original a todas las células fusionadas.

Esto es frecuentemente necesario para las aplicaciones DB, así que quería compartirlo contigo.

Sub BirlesenHucreleriAyirDegerleriGeriYaz() 
    Dim Hucre As Range 
    Dim Aralik 
    Dim icerik 
    Dim mySheet As Worksheet 

    For Each mySheet In Worksheets 

    mySheet.Activate 
    MsgBox mySheet.Name & “ yapılacak…” 

    For Each Hucre In mySheet.UsedRange 
     If Hucre.MergeCells Then 
      Hucre.Orientation = xlHorizontal 
      Aralik = Hucre.MergeArea.Address 
      icerik = Hucre 
      Hucre.MergeCells = False 
      Range(Aralik) = icerik 
     End If 
    Next 

MsgBox mySheet.Name & " Bitti!!" 

Next mySheet 
End Sub 
Cuestiones relacionadas