Pergunta

Dada uma linha e coluna (As Long), como você pode determinar a notação planilha usando o VBA no Excel (2007):

por exemplo:.

(R, C) = (1, 1) -> "A1"
(R, C) = (2, 1) -> "A2"
(R, C) = (2, 2) -> "B2"

Assim, se você tinha uma função:

Function CellRef(R As Long, C As Long) As String

que forneceu essa funcionalidade, você poderia fazer algo como:

Worksheet.Range(CellRef(R1, C1) + ":" + CellRef(R2, C2)).Copy

Um pouco de fundo, no caso de esta é a abordagem errada para tomar: O objetivo deste é que eu tenho uma folha de mestre que descreve outras planilhas em uma tabela:

WorksheetName, Range etc....

Esta folha mestre controles transformações na folha, mas o valor da faixa é, obviamente, em notação Excel para uso posterior conveniente, em referência ao intervalo. No entanto uma rotina para gerenciar essa tabela, exceções de relatório e assegurar a consistência realmente faz as coisas de outras folhas na linha e coluna, assim, por exemplo torna-se uma linha e coluna onde ele sabe alguma coisa está começando e terminando.

Aqui está a função acabei com:

Private Function CellRef(R As Long, C As Long) As String
    CellRef = vbNullString
    On Error GoTo HandleError:
    CellRef = Replace(Mid(Application.ConvertFormula("=R" & R & "C" & C, XlReferenceStyle.xlR1C1, XlReferenceStyle.xlA1), 2), "$", "")
    Exit Function
HandleError:
End Function
Foi útil?

Solução

este é o que você está procurando?

Outras dicas

http://support.microsoft.com/kb/833402 é uma solução Microsoft para o problema da conversão de números de letras (a parte mais complicada da conversão a partir de 1,1 para A1). Isso realmente tem a beuaty de trabalhar em outras aplicações que não Excel, uma vez que se baseia em VBA básica.

Em seguida, você adicionar:

' Converts row and column index to Excel notation, ie (3, 2) to B3.
Private Function generateExcelNotation(row As Integer, column As Integer) As String
    ' error handling of your choice, I go for returning an empty string
    If (row < 1 Or column < 1) Then
        generateExcelNotation = ""
        Exit Function
    End If
    generateExcelNotation = ConvertToLetter(column) & row
End Function

A expressão 'rngTemp.Address (Falso, Falso,,, .Cells (1, 1))' mostrará o endereço da gama rngTemp em notação A1, que não contém $ s para significar um endereço absoluto. Para obter um endereço absoluto, substituir 'False, False' com ''.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top