VBA / Excel: как разрешить пользователю добавлять новую строку, используя выпадающий выбор - PullRequest
0 голосов
/ 28 марта 2019

Я создал простую форму запроса, которая приводит пользователя к электронной таблице, где его просят заполнить имя, фамилию, псевдоним пользователя, доступ для деактивации и роль для деактивации.Форма может быть использована для 9 различных пользователей.Я хотел бы добавить еще один столбец с надписью "Новая строка для того же пользователя?"где будет доступно выпадающее меню с ответами «да» и «нет».И если пользователь выберет «да», новая строка будет заполнена тем же именем и псевдонимом, что и предыдущая строка, в то время как другие строки под ним будут сдвигаться вниз на одну строку.Дело в том, что я бы хотел:

1) создать новую строку, но

2) копировать только имя (столбец A), фамилию (столбец B) и псевдоним пользователя (Колонка C) этого пользователя.Параметр «Доступ к деактивации» (столбец D) и параметр «Роль для деактивации» останутся пустыми, чтобы инициатор запроса мог их заполнить.И опция «Новая строка для того же пользователя» также не будет заполнена в новой скопированной строке.

Вот скриншот того, что я имею в виду: enter image description here

Я пробовал разные подходы с использованием VBA, но так как я не настолько опытен, я не мог придумать ничего, что бы работало именно для этой цели.Я считаю, что он должен быть основан на динамическом диапазоне, чтобы он работал во всей форме.Не могли бы вы посоветовать, пожалуйста?

1 Ответ

0 голосов
/ 28 марта 2019

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

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim LastRow As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        If Not Intersect(Target, .Range("F7:F" & LastRow)) Is Nothing And Target.Value = "Yes" Then
            Application.EnableEvents = False
                .Rows(Target.Row + 1).EntireRow.Insert
                .Range("A" & Target.Row & ":C" & Target.Row).Copy .Range("A" & Target.Row + 1 & ":C" & Target.Row + 1)
            Application.EnableEvents = True
        End If

    End With

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