Как правильно заказать фото - PullRequest
0 голосов
/ 02 мая 2019

Я делаю программу в Excel, которая берет все фотографии из каталога и помещает их в программу.Главное, что мне нужно поместить эти фотографии отдельно и заказать, потому что этот архив будет напечатан и вырезан.

Я пытался создать алгоритм в VBA, который пытается поместить эти фотографии в 5 строк в одной строке, 5 в следующей, 5 в следующей ...

Это выглядело просто,но я не знаю, почему моя программа доставляет мне некоторые проблемы.

Работает, и я обнаружил сбой.Проблема в том, что когда мне нужно изменить строку, первая фотография следующей строки вставляется в то же место, что и последняя фотография последней строки.Я имею в виду, что если бы у меня было 10 фотографий 1,2,3,4,5,6,7,8,9,10, это было бы 1 2 3 4 5 (следующая строка) 6 7 8 9 10

Но я получаю следующее:

1 2 3 4 56 (один код под другим) (следующая строка) 7 8 9 10

Это удивительно для меня, потому что космический резервер дляпервая фотография в следующей строке все еще пуста, но фотография находится в строке перед вставкой другой

Это мой код, который пытается упорядочить изображения:

Count = 0
columna = 2
i = 0

cll = 1
Sheets("Hoja3").Select


For Each celda In rng


If Len(Trim(celda)) > 0 Then

        'defino la celda equivalente de la columna A y la selecciono
        If columna <= 10 Then
      '   MsgBox (columna)
        Set r1 = Cells(cll, columna)

        columna = columna + 2
        Else
        columna = 2
        cll = cll + 2
        Set rl = Cells(cll, columna)

        columna = columna + 2



        End If


        r1.Select


        'se inserta la imagen de la ruta definida


        Set Fotos = ActiveSheet.Pictures.Insert(Ruta & celda.Value)

        'con la posición definida respecto a la celda de la columna B seleccionada

        With Fotos

            .Top = r1.Top

            .Width = .Width / 2.5

            .Height = .Height / 2.5

            .Left = r1.Left + (r1.Width - Fotos.Width) / 3

            .ShapeRange.LockAspectRatio = msoFalse

             r1.EntireRow.RowHeight = .Height

            .Placement = xlMoveAndSize

        End With

    r1.Select

End If

Next celda

1 Ответ

0 голосов
/ 02 мая 2019

Попробуйте это:

Dim pos As Long
pos = 0

For Each celda In Rng
    If Len(Trim(celda)) > 0 Then
    Set Fotos = Sheets("Hoja3").Pictures.Insert(Ruta & celda.Value)
    Set r1 = Sheets("Hoja3").Cells(((pos \ 5) + 1) * 2, (pos Mod 5) + 1 * 2)
        With Fotos
            .Top = r1.Top
            .Width = .Width / 2.5
            .Height = .Height / 2.5
            .Left = r1.Left + (r1.Width - Fotos.Width) / 3
            .ShapeRange.LockAspectRatio = msoFalse
            .Placement = xlMoveAndSize
            r1.EntireRow.RowHeight = .Height
       End With
    pos = pos + 1
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...