사용자 입력을 변수에 저장하는 InputBox가 있습니다. 사용자가 입력하는 입력은 셀 번호입니다.사용자가 VBA를 사용하여 Excel InputBox에 대한 입력으로 셀을 클릭하게하십시오.
예를 들어, 입력 상자가 나타나서 사용자에게 "어디서 시작 하시겠습니까?"라고 묻습니다. 그런 다음 사용자는 A4로 입력하거나 시작하려는 셀을 입력합니다.
제 질문은 사용자가 실제로 입력하는 대신 A4 셀을 클릭 할 수있게하는 방법이 있습니까? 사전에 어떤 도움
감사
업데이트 : 그래서, 기본적으로 우리가 수평에 걸쳐 전치 데이터의 긴 목록을 가지고있다. 우리는이 목록이 수평 적으로 서로 겹치기를 원합니다. 이것이 바로이 코드가하는 일입니다.
모든 것이 잘 작동했지만 사용자가 입력란에 셀 번호를 수동으로 입력해야합니다. 입력 상자는 사용자에게 자르기를 시작할 위치를 묻고 두 번째 상자는 붙여 넣기를 시작할 위치를 묻습니다. 그 입력 값을 문자열 변수에 저장하면 모든 것이 매력처럼 작동합니다.
그 이후로 실제로 행 번호를 확인하기가 어려울 수 있으므로 사용자가 셀을 실제로 클릭 할 수 있기를 바랍니다. 아래 코드는 사용자가 셀을 클릭 할 때 사용하려고하는 변경 사항을 반영하여 업데이트됩니다. Application.InputBox 메서드를 추가하고 변수에 대한 내 선언을 Range로 변경했습니다.
나는 한 번에 하나씩 프로그램을 밟아서 무슨 일이 일어나고 있는지를 알게되었고, 이것이 내가 발견 한 것입니다. 이전에 사용자가 B4에서 시작하여 A16에 붙여 넣기를 원할 경우 B (B4 : B15)의 데이터 범위를 선택하고 자르고 A16에 붙여 넣습니다. 그런 다음 코드가있는 방식으로 B4 사용자 입력 지점으로 돌아가서 for 루프를 사용하여 x 변수를 증가 시키면 오른쪽으로 다음 열로 오프셋됩니다. 그래서 C 럼 (C4 : C15)을 절단하고 A28 (xldown 사용)에 붙여 넣기 등의 작업을 반복합니다.
내가 현재 코드를 밟았을 때 무슨 일이 일어나는지는 범위 변수에 기록 된 값이 표시되지 않는다는 것입니다. B4 : B15를 자르고 A16에 붙여 넣기의 첫 번째 단계는 수행하지만 다음 루프를 실행하려면 B4에서 다시 시작하고 오프셋하는 대신 A16에서 시작한 다음 오프셋합니다. 사용자가 시작 지점으로 선택한 B4로 돌아가서 오프셋해야합니다.
죄송합니다. 긴 설명을 위해,하지만이 상황을 정리하는 데 도움이되기를 바랍니다. Application.InputBox
사용현재 코드
Dim x As Integer Dim strColumnStart As Range Dim strColumnEnd As Range On Error Resume Next Application.DisplayAlerts = False Set strColumnStart = Application.InputBox("What cell would you like to start at?", "Starting position","Please include column letter and cell number", Type:=8) On Error GoTo 0 Set strColumnEnd = Application.InputBox("Where would you like to paste the cells to?", "Pasting position", "Please include column letter and cell number", Type:=8) On Error GoTo 0 Application.DisplayAlerts = True If strColumnStart = "What cell would you like to start at?" Or _ strColumnEnd = "Please include column letter and cell number" Then Exit Sub Else For x = 0 To strColumnStart.CurrentRegion.Columns.Count strColumnStart.Select ActiveCell.Offset(0, x).Select If ActiveCell.Value = Empty Then GoTo Message Else Range(Selection, Selection.End(xlDown)).Select Selection.Cut strColumnEnd.Select ActiveCell.Offset(-2, 0).Select ActiveCell.End(xlDown).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste strColumnStart.Select End If Next x End If Message: MsgBox ("Finished") strColumnEnd.Select ActiveSheet.Columns(ActiveCell.Column).EntireColumn.AutoFit Application.CutCopyMode = False End Sub
좋아, 그것이 어느 정도 작동 있도록. 그러나 A4 대신 셀을 선택하면 A $ 4 $가 입력되어 루프를 실행하고 셀 참조를 가질 수 없습니다. – Leon
게시 한 코드는 예제 일뿐입니다. 사용을 위해 문제를 수정하는 경우 문제가있는 실제 코드를 게시해야합니다. –
'x = 0 인 경우 strColumnStart.ActiveCell.Offset (0, x) .Select - ActiveCell.Value = 비어있는 경우 - GoTo 메시지 - Else 범위 (Selection, Selection.End (xlDown)). strColumnEnd.Select - ActiveCell.Offset (-2, 0) .Select - ActiveCell.End (xlDown) .Select - ActiveCell.Offset (1, 0) .Select - ActiveSheet.Paste - strColumnStart.Select - 다음 경우 x' – Leon