Вставка отмеченных элементов листа в цветные ячейки другого листа в VBA Excel - PullRequest
0 голосов
/ 27 мая 2020

У меня есть программа VBA Excel для копирования значений ячеек в цветные ячейки другого листа, когда установлен флажок, присутствующий в следующей ячейке листа 1. Теперь моя проблема: 1. Когда установлен флажок в соответствующей строке, он копирует значение указанной выше ячейки (например, когда флажок 21 no 's установлен, он копирует значение 20) 2. Когда он достигает неокрашенного ячейка вставляет значение и переходит к следующей строке.

  Sub executeCheckBoxes()


    Dim src As Worksheet
    Dim tgt As Worksheet
    Dim chkbx As CheckBox
    Dim i As Long

    Set src = ThisWorkbook.Worksheets("Sheet1")
    Set tgt = ThisWorkbook.Worksheets("Sheet2")
    srcLR = src.Cells(src.Rows.Count, 1).End(xlUp).Row
    tgtER = tgt.Cells(tgt.Rows.Count, 1).Row + 1
    i = 4
    j = 1
    For Each chkbx In src.CheckBoxes
        If chkbx.Value = xlOn Then
        tgt.Cells(i, j).Value = _
            src.Cells(chkbx.TopLeftCell.Row, 1).Value
        tgt.Activate
            If tgt.Cells(i, j).Interior.ColorIndex <> 0 Then
            'tgt.Cells(i, j).Select
             Debug.Print chkbx.Name
             j = j + 1

            Else
             i = i + 1
             j = 1
            End If

         End If
      Next chkbx

End Sub

Итак, это мой внешний вид листа 2: SHEET 2

У меня 1 до 278 номеров вместе с отдельными флажками на «листе 1». Но я хотел, чтобы они копировались слева направо, и это тоже должно располагаться внутри цветных ячеек в зависимости от выбранных значений ячеек.

Это мой лист 1: SHEET 1

Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 27 мая 2020
Function Filled(MyCell As Range)
If MyCell.Interior.ColorIndex > 0 Then
    Result = 1
Else
    Result = ""
End If
Filled = Result
End Function

Этот код был взят из обсуждения здесь .

Используя эту функцию, вы можете написать while l oop, которое начинается с ячейки 1,1, которая затем идет горизонтально, пока не достигнет ячейки без цвета. Затем будет go до следующей строки. Если он перешел на следующую строку, а ячейка не имела цвета, вы могли бы выйти из while l oop и отправить сообщение с надписью «Закончились ячейки» или что-то в этом роде.

Это предполагает, что цветные ячейки все одного цвета. Также предполагается, что в строке нет разрыва цвета (т.е. один непрерывный цветной блок).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...