2013-07-16 2 views
2

프롬프트 자체에 여러 옵션이있는 입력 프롬프트를 생성하는 방법이 있습니까? 사용자는 제공된 옵션 중 하나를 선택할 수 있습니다. 현재로서는 '입력 문자열'을 사용하여 변수의 값을 설정하고 있습니다. 예 : 선택할 시트는 무엇입니까? Sheet1? Sheet2? Sheet3?옵션을 사용한 입력 프롬프트

+1

'입력 프롬프트'및 '입력 문자열'은 무엇입니까? 어떤 기능을 사용하고 있습니까? 데이터 유효성 검사 또는 일부 형태의 콤보 박스? 질문을 명확히해야합니다. –

답변

1

값이있는 목록 (다른 시트의 일부 셀)을 만들고 목록을 표시하고 이름 (보통 수식 필드의 왼쪽 필드)을 선택할 수 있습니다 (예 : "myList"를 입력 한 다음 입력 문자열 대신 "list"유형을 선택하고 매개 변수 = myList를 지정합니다.

예 :

답 : :

http://www.gilliganondata.com/index.php/2011/05/10/excel-dropdowns-done-right-data-validation-and-named-ranges/

난 당신이에서 InputBox() 함수를 사용하여 의미 경우이 R

1

도움이되기를 바랍니다하지 아니 당신은 할 수 없습니다. InputBox는 VBA에 내장되어 있으며 수정할 수 없습니다.

그러나 직접 입력 상자를 작성할 수 있습니다. 여기에 수행

  1. 당신은 콤보 상자, 레이블, 버튼 등

  2. 와 formComboInput라는 이름의 사용자 정의 폼을 작성해야합니다 ReturnVal라는 형태의 코드에서 공공 정수 변수를 만듭니다.

  3. formComboInput.InialiseForm 하위에 ReturnVal에 -1 값을 할당하고 그 하위에 콤보 상자도 채 웁니다.

  4. 사용자 정의 단추 클릭 코드에서 formComboInput.comboInput.ListIndex의 값을 ReturnVal에 할당하고 양식을 숨 깁니다. 폼로드 등 InitialiseForm 같은 서브 루틴 콤보 채울

(). 콤보 박스 범위는 별도의 시트 또는 정적 배열에 저장할 수 있습니다.

그런 다음 아래 (테스트되지 않은 죄송합니다)와 비슷한 코드를 삽입 :

' User form code: 
Option Explicit 

public ReturnVal as integer 

sub InitialiseForm()   
    dim i as integer 

    ReturnVal = -1 

    comboInput.Clear 

    for i = 1 to ThisWorkbook.Worksheets.Count ' Populates combobox 
     comboInput.AddItem ThisWorkbook.Worksheets(i).Name 
    next 

end sub 

btnOK_Click() 
    ReturnVal = comboInput.ListIndex ' Change ReturnVal from -1 to the listbox index 
    Me.Hide 
End Sub 

' Module/sheet code: 
Option Explicit 

function ShowComboInput(InputBoxCaption as String, DefaultResult as String) as String 

    with formComboInput 
     .InitialiseForm() ' Make the combo box populate etc 
     .labelCaption = InputBoxCaption 
     .Show vbModal ' CODE EXECUTION PAUSES HERE UNTIL FORM IS CLOSED 

     if .ReturnVal > -1 then 
      ShowComboInput = .comboInput.Value ' Returned if user clicks OK button 
     else 
      ShowComboInput = DefaultResult ' Returned if user closes form 
     end if 

    end with 

end function 


sub InputBoxExample() ' Call this sub to test the above code 

    MsgBox ShowComboInput("Testing", "User didn't click OK button!") 

end sub 

이 코드는 그래서 일부 조정이 필요할 수 있습니다 안된 그러나 일반적으로이 나는 사용자 정의 입력 상자를 구현하는 것이 방법이다.

관련 문제