2014-12-08 1 views
1

Excel의 셀 안에 상대 버튼을 삽입하려고합니다. 사실, 내가 원하는 것은 셀 안에 있고 행/열이 추가/삭제 될 때 상대적으로 이동할 수있는 버튼입니다. 또한 버튼이 들어있는 셀 아래의 셀에 특정 텍스트를로드하려고합니다. 그게 Excel에서 할 수 있습니까? 계속 진행할 방법이 확실하지 않습니다! VB에서 새로운! 어떤 도움에 감사드립니다 :)Microsoft Excel에서 셀 안에 상대 단추를 삽입하는 방법은 무엇입니까?

편집 :

가 나는 다음과 같은 코드를 사용하고 상대 버튼을 배치하려면 다음에 값을로드

Sub buttonInACell() 
Dim btn As Button 
Dim t 

    Set t = ActiveSheet.Cells(10, 6) 
    Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height) 

End Sub 

가 이제 버튼에 매크로를 추가 할 필요를 그것 아래의 셀 .. 나는 내가 TopLeftCell 속성을 사용해야한다고 생각합니다. 그런데 어떻게 버튼을 참조 할 수 있습니까?

답변

1

버튼에 매크로를 지정하려면 OnAction 속성을 사용할 수 있습니다.이 매크로는 호출 할 매크로의 이름으로 설정합니다. 해당 매크로 안에서 Application.Caller를 사용하여 단추의 이름을 가져올 수 있으며이 이름을 사용하여 취할 조치를 취할 수 있습니다.

Sub buttonInACell() 
Dim btn As Button 
Dim t, x 

    For x = 1 To 5 
     Set t = ActiveSheet.Cells(2, x) 
     Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height) 
     btn.OnAction = "ClickedMe" 
    Next x 

End Sub 

Sub ClickedMe() 

    Dim c, s 
    c = Application.Caller 
    Set s = ActiveSheet.Shapes(c) 
    s.TopLeftCell.Offset(1, 0).Value = "clicked" 


End Sub 
+0

나는 또한 똑같은 일을하고있다. 의심 할 여지없이, vba를 사용하는 셀에 값이 있는지 어떻게 확인할 수 있습니까? ActiveSheet.Cells (row, col) .Value = Null Then – Chandeep

+0

나는 보통 If Len (ActiveSheet.Cells (row, col) .Value) = 0'을 사용할 것이다. 가능하다면, 확실하게 ;-) –

+0

ActiveSheet.Cells (row, col) .Value = ""시도했을 가능성이있다. (Len (Trim (ActiveSheet.Cells (row, col) .Value)) = 0) !! !! – Chandeep

0

답장 @Tim! 사실은 내가 피곤 자신을 조금 파악하고 나는대로 내 요구 사항에 따라 해결책에 도달 :

셀 :: 버튼의 클릭에

Sub buttonInACell() 
Dim btn As Button 
Dim t 

    Set t = ActiveSheet.Cells(10, 6) 
    Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height) 

End Sub 

::

에 버튼을 넣어를
Public flag As Integer 

Sub buttonInACell_Click() 

Dim row As Integer, col As Integer 

    'flag=0 : no show, flag=1 : show 

    row = ActiveSheet.Shapes(Application.Caller).TopLeftCell.row 
    col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column 

    If flag = 0 Then 
     ActiveSheet.Shapes(1).TextFrame.Characters.text = "Show data" 
      If ActiveSheet.Cells(row + 2, col).Font.Color = vbRed Then 
      ActiveSheet.Cells(row + 2, col).Value = "" 
      End If 
     ActiveSheet.Cells(row + 2, col).Font.Color = vbWhite 
     ActiveSheet.Cells(row + 2, col).WrapText = False 
     flag = 1 

    ElseIf flag = 1 Then 
     ActiveSheet.Shapes(1).TextFrame.Characters.text = "Hide Data" 
      If ActiveSheet.Cells(row + 2, col).Value = "" Then 
       ActiveSheet.Cells(row + 2, col).WrapText = True 
       ActiveSheet.Cells(row + 2, col).Font.Color = vbRed 
       ActiveSheet.Cells(row + 2, col).Value = "Sorry! No Sample Data As of Yet!" 
      Else 
       ActiveSheet.Cells(row + 2, col).WrapText = True 
       ActiveSheet.Cells(row + 2, col).Font.Color = vbBlack 
      End If 
     flag = 0 
    End If 
End Sub 

이것은 실제로 무엇입니까? 토글 버튼을 만들고 상대방 셀의 데이터를 전환 할 수 있습니다! :)

관련 문제