Скопируйте ячейки и вставьте содержимое в текстовое поле. - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть 2 рабочих листа - «Помощник диаграммы Венна», состоящий из ряда именованных диапазонов данных, и «Диаграмма Венна» с несколькими текстовыми полями над изображением диаграммы Венна.

У меня есть капляв раскрывающемся списке на листе диаграммы Венна в ячейке C5, который я хочу использовать для запуска копирования и вставки определенных диапазонов в определенные текстовые поля.

Я бы хотел, чтобы пользователь выбрал из выпадающего списка -Возможные варианты: «Конец фазы 1», «Конец фазы 2» или «Конец года», а имена лиц в соответствующем именованном диапазоне должны быть скопированы и вставлены в текстовое поле с помощью «;»отделяя каждое имя.

Я начал писать код, но, поскольку я новичок в VBA и пытался адаптировать примеры, которые я нашел в Интернете, он не работает.Может ли кто-нибудь из вас потратить время, чтобы помочь мне с надписью «чтение», пожалуйста?Я уверен, что когда у меня будет код модели, я смогу адаптировать его для заполнения оставшихся текстовых полей.

Это то, что у меня есть:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("C5")) Is Nothing Then

Dim Helper As Worksheet
Dim Venn As Worksheet
Dim EoP1Rdg As Range
Dim EoP2Rdg As Range
Dim EoYRdg As Range
Dim Rdg_TxtBox As OLEObject

Set Helper = ThisWorkbook.Worksheets("RWM Venn Diagram Helper")
Set Venn = ThisWorkbook.Worksheets("RWM Venn Diagram")
Set Rdg_TxtBox = Venn.OLEObjects("Rdg_TxtBox")

With Helper
    Set EoP1Rdg = .Range("AQ4:AQ103")
    Set EoP2Rdg = .Range("AX4:AX103")
    Set EoYRdg = .Range("BE4:BE103")
End With

If Intersect(Target, Range("C5")) = "End of Phase 1" Then
        With Helper
            .Select ("EoP1Rdg")
            .Copy
        End With

        With Venn
            .Select Rdg_TxtBox
            .Paste
        End With
End If

End If

End Sub

СпасибоВы заранее!

РЕДАКТИРОВАТЬ: 25/9 5 вечера * 10101

Я изменил выпадающий список для проверки данных на комбинированный список, как указано ниже.Я переписал код, но он все еще не работает правильно (текст не копируется в текстовое поле).Кто-нибудь может посоветовать мне, пожалуйста, пожалуйста?

Sub DropDown5_Change()

Dim Helper As Worksheet
Dim Venn As Worksheet
Dim EoP1Rdg As Range

Set Helper = Sheets("RWM Venn Diagram Helper")
Set Venn = Sheets("RWM Venn Diagram")
Set EoP1Rdg = Range("EoP1Rdg")

If DropDown5 = "End of Phase 1" Then

Sheets("RWM Venn Diagram Helper").Select
    Range("AQ4:AQ103").Select
    Selection.Copy
    Sheets("RWM Venn Diagram").Select
    ActiveSheet.Shapes.Range(Array("TextBox 7")).Select
    Application.CutCopyMode = False
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
        "Name 15" & Chr(13) & "Name 16"

End If

End Sub

Большое спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Я предполагаю, что вы используете раскрывающийся список внутри ячейки из вкладки «Данные» -> «Проверка данных».Вы выбрали событие «Рабочий лист», которое срабатывает каждый раз, когда вы щелкаете по ячейке или выбираете группу ячеек (диапазон).Событие не сработает при выборе значения в раскрывающемся списке «Проверка данных».

Вы хотите перейти на вкладку «Разработчик», нажать кнопку «Вставить» и вставить комбинированный список.См. Рисунок ниже:

Developer Button Bar

ComboBox - вторая кнопка в первом ряду в разделе «Управление формами».Вы захотите избегать элементов управления Active X, пока не станете более опытными с VBA.

Вам следует ознакомиться с Обзор форм, элементов управления форм и элементов управления ActiveX на рабочем листе .

После перетаскивания, изменения размера и изменения размера ComboBox вы можете нажать «Просмотр кода» на панели кнопок справа от «Вставить».Это откроет редактор кода VBE, и именно здесь вы захотите написать код, который обрабатывает событие изменения.

У меня нет вашей рабочей книги, поэтому я не могу показать вам все, чтовозможно, потребуется изменить.

В приведенном ниже коде я попытался показать разницу между записью макроса и программированием в VBA.Большим изменением является оператор перед End If, где вы назначаете текстовую строку для Shape.

If DropDown5 = "End of Phase 1" Then

    'This piece of code shows you clicking on the RWM Venn Diagram Helper sheet
    'Which if you're writing the code, you need to do the following
    'Declare and set an object variable to the Workbook
    Dim wb As Workbook
    Set wb = ThisWorkbook

    'Declare and set an object variable to the Helper worksheet
    'in this case source (srcWS)
    Dim srcWS As Worksheet
    Set srcWS = wb.Sheets("RWM Venn Diagram Helper")

    'Declare and set an object variable to the Digram worksheet
    'in this case target (tarWS)
    Dim tarWS As Worksheet
    Set tarWS = wb.Sheets("RWM Venn Diagram")

    'Sheets("RWM Venn Diagram Helper").Select
    srcWS.Activate

    Range("AQ4:AQ103").Select
    Selection.Copy

    'Sheets("RWM Venn Diagram").Select
    tarWS.Activate

    'ActiveSheet.Shapes.Range(Array("TextBox 7")).Select
    tarWS.Shapes.Range(Array("TextBox 7")).Select

    'This statement is used by the macro generator to clear the
    'clip board when you complete the paste operation
    'Application.CutCopyMode = False
    'I haven't seen any paste function at this point.

    'Change this to the statement that follows
    'Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
        "Name 15" & Chr(13) & "Name 16"
    'This assumes that the Venn Diagram is on target sheet
    'That it is shape 1 - if there's only one shape, probably
    tarWS.Shapes(1).TextFrame2.TextRange.Text = "Name 15" & Chr(13) & "Name 16"

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