Új hozzászólás Aktív témák

  • martonx
    veterán

    Üdv!

    VBA-ban szeretnék bizonyos rowsource tulajdonságot állítani változók segítségével.
    A probléma az, hogy az oszlopoknak és a soroknak csak a számát ismerem és sehogyan sem sikerült r1c1 típusú hivatkozással megoldani a dolgot.

    Jelenleg egy ilyen félmegoldásom van:

    szektorkod = Application.WorksheetFunction.Match("Szektorkód", ThisWorkbook.Sheets("Napló").Range("1:1"), 0)
    szektornev = Application.WorksheetFunction.Match("Szektornév", ThisWorkbook.Sheets("Napló").Range("1:1"), 0)

    szektorkodvege = ThisWorkbook.Worksheets("Napló").Columns(szektorkod).End(xlDown).Row
    x = Cells(2, szektorkod).Address
    y = Cells(szektorkodvege, szektornev).Address
    ComboBox27.RowSource = "Napló!" + x + ":" + y

    Az alsó 4 sort szeretném lerövidíteni max 2 sorra a vezérlők nagy száma miatt.

    A legjobb megoldás talán az volna, ha sikerülne az oszlopok számát valahogyan visszaalakítani betűre, mert úgy a változókból egyszerűen össze tudnám rakni a rowsource-ot vagy a match eredményét valahogyan úgy megkapni, hogy az ne r1c1 típusú hivatkozás legyen.

    Előre is köszönöm a segítséget!

    Bevallom egy ideje nem tudlak követni. Mindenesetre egy ilyet találtam neten, hátha segít:

    Function ConvertToLetter(iCol As Integer) As String
    '-----------------------------------------------------------------------------
    ' Procedure : ConvertToLetter
    ' Author    : Niall - Zypher.co.uk
    ' Purpose   : Convert a number to a column letter
    '             Tested to 256 columns, assumed to work until 702 (ZZ)
    '-----------------------------------------------------------------------------
    '
        If iCol <= 26 Then
            ' Columns A-Z
            ConvertToLetter = Chr(iCol + 64)
        Else
            ConvertToLetter = Chr(Int((iCol - 1) / 26) + 64) & _
                              Chr(((iCol - 1) Mod 26) + 65)
        End If
    End Function

Új hozzászólás Aktív témák