Хобрук: Ваш путь к мастерству в программировании

Использование VBA, чтобы предложить пользователю выбрать ячейки (возможно, на другом листе)

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

* Тип подсказки, которую вы получаете при создании диаграммы или использовании графического интерфейса для вставки функции.

например здесь: Снимок экрана, показывающий необходимые функции — всплывающее окно аргументов функции

и здесь: Снимок экрана, показывающий необходимые функции — всплывающее окно

Поэтому я ищу что-то вроде

Sub MyMacro()
    MsgBox "Please select data range"

    ' allow user to select range (as images above)
    CreateFunctionArgumentsPrompt()    

    'do stuff with user selected range of cells
    ...
End Sub

Можно ли получить доступ к встроенным функциям Excel для выполнения того, что я называю: CreateFunctionArgumentsPrompt()

Примечание: это похоже на вопрос SO excel vba get range диапазона, выбранного пользователем мышью, но отличается тем, что

  1. Я хочу использовать встроенный графический интерфейс Excel, как показано выше.
  2. Мне нужно иметь возможность выбирать и ссылаться на диапазон на листе, отличном от активного листа
02.04.2014


Ответы:


1

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

Sub RangeSelectionPrompt()
    Dim rng As Range
    Set rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)

    MsgBox "The cells selected were " & rng.Address
End Sub

Это основано на ответе, данном в этот MrExcel ответ.

Вот как это выглядит в использовании:

введите здесь описание изображения

02.04.2014
  • Есть только одна проблема с этим кодом. Возвращаемый адрес диапазона не является полным, если выбор сделан на другом листе или в другой книге. Так что вам придется позаботиться и об этом :) Возможно, вы захотите увидеть ссылку, которую я разместил под вопросом... 02.04.2014
  • Это круто! Как раз то, что я искал, спасибо! 22.09.2016
  • @Siddharth Rout — я только что протестировал это решение, и rng.Worksheet.Name и rng.Worksheet.Parent.Name (для проверки книги) возвращали имена листа и книги, даже когда я выбираю диапазон на другом листе или книге. 19.07.2018
  • Намного легче читать Type:=8 против ,,,,,,,,8) 19.11.2019

  • 2

    То, что вы ищете, это диалоговое окно (также называемое общим диалогом). К сожалению, вы не можете добавить его в существующий встроенный в объектах (по крайней мере, без использования VBA).

    Как упоминалось выше, вы можете имитировать эту функциональность, используя InputBox и Forms. Тем не менее, я видел проприетарные программы, основанные на Excel, в которые компания добавляла описанные вами функции. Однако я считаю, что вам нужно использовать C++ или более глубокий язык для создания DLL, которые могут выполнить это.

    Что касается диалогов, стоит отметить: в Excel есть встроенный Библиотека объектов Common File Dialog, которая позволяет создавать стандартные диалоговые окна файлового сервера (например, Open, Save & Select) с использованием существующих диалогов Windows API.

    02.04.2014
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..