2014-04-02 29 views
8

Pracuję w programie Excel w projekcie VBA i chcę, aby część mojego makra wyświetlała monit o wybranie zakresu komórek *, które makro może później robić rzeczy.Używanie języka VBA do monitowania użytkownika o wybranie komórek (prawdopodobnie z innego arkusza)

* Rodzaj wierszu pojawi się podczas tworzenia wykresu, albo za pomocą graficznego interfejsu użytkownika, aby wstawić funkcję

np tutaj: Screengrab showing required functionality - the Excel 'Sum' Function Arguments pop-up

i tutaj: Screengrab showing required functionality - the Excel Function Arguments pop-up

mam do nich szuka czegoś wzdłuż linii

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 

Czy to możliwe, aby uzyskać dostęp do wbudowanych funkcji programu Excel do wykonywania co odsyłam na: CreateFunctionArgumentsPrompt()

Uwaga: jest to podobne do pytania SO excel vba get range of user selected range by mouse, ale różni się tym, że

  1. chcę użyć wbudowanej funkcjonalności GUI programu Excel, jak wyświetlane powyżej
  2. muszę być w stanie wybrać i odnoszą się do zakresu w arkuszu innym niż aktywnym arkuszu
+0

Znalazłem ten link: http://www.excelforum.com/excel-programming-vba-macros/493780-excel-range-choose-button-in-vba-form.html To może być pomocne – lowak

Odpowiedz

15

ten nie jest za pomocą wbudowanego w które pokazałeś wyżej, ale nie pozwalają wybrać zakres komórek w następstwie wierszu dochodów:

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 

ta opiera się na odpowiedzi udzielonej w this MrExcel answer.

Oto jak to wygląda w użyciu:

enter image description here

+3

tylko jeden problem z tym kodem. Zwrócony adres zakresu nie jest w pełni kwalifikowany, jeśli wybór pochodzi z innego arkusza lub innego skoroszytu. Więc będziesz musiał się tym również zająć :) Możesz zobaczyć link, który zamieściłem pod pytaniem ... –

+0

To jest niesamowite! Właśnie tego szukałem, dzięki! –

0

Co szukasz jest okno dialogowe (nazywane również wspólny dialog). Niestety jesteś cannot add one to the existing built in objects (przynajmniej nie używając VBA).

Jak wspomniano powyżej, można naśladować tę funkcjonalność za pomocą InputBox i formularzy. Powiedział, że widziałem własne programy, które są oparte na programie Excel, gdzie firma dodaje rodzaj opisywanej funkcjonalności. Jednak uważam, że musisz użyć C++ lub głębszego języka, aby utworzyć biblioteki DLL, które mogą wykonać to zadanie. Warto zwrócić uwagę na okna dialogowe: Excel ma wbudowaną funkcję Common File Dialog object library, która pozwala tworzyć wspólne okna dialogowe serwera plików (takie jak Otwórz, zapisz & Wybierz) za pomocą istniejących okien dialogowych Windows API.