VBA копировать из ячеек на другой лист, когда значение да - PullRequest
0 голосов
/ 21 мая 2019

Итак, у меня есть два листа, один с информацией и один, куда информацию тоже нужно скопировать.

Если DONE помечен как да, вся информация в этой строке будет скопирована на лист с названием «FullpInfo2 (с кнопкой)». В «шаблоне» на картинке. Но я понятия не имею, что делать сейчас. кто-то просто подскажет, как это продолжить?

Если я добавлю новую строку и присвоу ей значение «да», она должна перезаписать предыдущую (Имя, Напиток, Еда, Автомобиль)

enter image description here

Sub CopyYes()
    Dim c As Range
    Dim j As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet

    Set Source = ActiveWorkbook.Worksheets("PersonalInfo")
    Set Target = ActiveWorkbook.Worksheets("FullpInfo")


    For Each c In Source.Range("E2:E100")   ' Do 100 rows

        If c = "yes" Then


        Source.Rows(c.Row).Copy Target.Rows(j)

            Target.Cells("B15").Value = Source.Cells("A").Value ' I dont know what to do here..

        End If
    Next c
End Sub

1 Ответ

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

Вы можете попробовать:

Option Explicit

Sub CopyYes()

    Dim cell As Range
    Dim Source As Worksheet, Target As Worksheet

    With ThisWorkbook
        Set Source = .Worksheets("PersonalInfo")
        Set Target = .Worksheets("FullpInfo")
    End With

    With Target

        'Formatting
        Call Module1.Formatting(.Range("B3"), "Name", "Titles")
        Call Module1.Formatting(.Range("D3"), "Drink", "Titles")
        Call Module1.Formatting(.Range("B6"), "Food", "Titles")
        Call Module1.Formatting(.Range("D6"), "Vehicle", "Titles")

        For Each cell In Source.Range("E2:E100")

            If cell.Value = "yes" Then

                'Values
                Call Module1.Formatting(.Range("B4"), Source.Range("A" & cell.Row).Value, "Values")
                Call Module1.Formatting(.Range("D4"), Source.Range("C" & cell.Row).Value, "Values")
                Call Module1.Formatting(.Range("B7"), Source.Range("B" & cell.Row).Value, "Values")
                Call Module1.Formatting(.Range("D7"), Source.Range("D" & cell.Row).Value, "Values")

            End If

        Next cell

    End With

End Sub

Sub Formatting(ByVal rng As Range, str As String, strType As String)

    With rng
        .Value = str
        .Font.Bold = True
        If strType = "Values" Then
            .Font.Color = vbBlue
        End If
    End With

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