2015-11-09 7 views
5

में गलत पंक्ति का संदर्भ देने वाला बटन मेरे पास कोड का यह ब्लॉक है जो बटन को यह जानने में सहायता करता है कि यह किस पंक्ति में है। हालांकि, जब मैं उपर्युक्त पंक्ति को छुपाता हूं, तो बटन छुपा पंक्ति को संदर्भित करता है।एक्सेल

उदाहरण के लिए: बटन पंक्ति 20 पर है और मैं पंक्ति 19 छुपाने के लिए, बटन रिटर्न पंक्ति 19. पर क्लिक तो मैं दोनों पंक्तियों 19 और 18, बटन रिटर्न पंक्ति 18.

यह वास्तव में अजीब हैं यह छिपाने के हैं। यहाँ

Sub AddButtons() 
    Dim button As button 
    Application.ScreenUpdating = False 

    Dim st As Range 
    Dim sauce As Integer 

    For sauce = 10 To Range("F" & Rows.Count).End(xlUp).Row Step 1 
    Set st = ActiveSheet.Range(Cells(sauce, 11), Cells(sauce, 11)) 
    Set button = ActiveSheet.Buttons.Add(st.Left, st.Top, st.Width, st.Height) 

    With button 
     .OnAction = "GoToIssue.GoToIssue" 
     .Caption = "Go To Source" 
     .Name = "Button" & sauce 
    End With 
    Next sauce 
    Application.ScreenUpdating = True 
End Sub 

और ब्लॉक जो बटन की पंक्ति आईडी रिटर्न एक बार क्लिक करते ही है::

यहाँ ब्लॉक जो मैं बटन बनाने के लिए प्रयोग किया जाता है

Sub GoToIssue() 

    Dim b As Object 
    Dim myrow As Integer 

    Dim hunt As String 

    Set b = ActiveSheet.Buttons(Application.Caller) 
    With b.TopLeftCell 
     myrow = .Row 

    End With 


    hunt = Worksheets("Dummy").Range("F" & myrow).Value 

    'MsgBox hunt 

End Sub 

आपका समय और मदद सराहना की जाती है

Public Function FindButtonRow(btn As Object) As Long 
    Dim cell As Excel.Range 
    '------------------------------------------------- 

    Set cell = btn.TopLeftCell 

    Do While cell.EntireRow.Hidden 
     Set cell = cell.Offset(1, 0) 
    Loop 

    FindButtonRow = cell.row 

End Function 

यह जांच करें कि क्या सेल TopLeftCell विधि द्वारा वापस नहीं छिपा पंक्ति में है:

+0

आप 'BottomRightCell' की कोशिश की? ऐसा लगता है कि यह सब बटन के आकार और यह कैसे विस्तार करता है पर निर्भर करता है। मैंने अभी परीक्षण का एक गुच्छा किया है और ऐसा लगता है कि 'दृश्यमान' कोशिकाओं को दिखाने के संदर्भ में 'BottomRightCell' अधिक विश्वसनीय है। –

उत्तर

2

आप इस सुविधा का उपयोग कर सकते हैं। यदि ऐसा है, तो फ़ंक्शन नीचे दिए गए सेल की कोशिश करता है, जब तक कि यह अनधिकृत पंक्ति से सेल पाता है।


आप अपने सबरूटीन बस ऐसे ही GoToIssue में इसका इस्तेमाल कर सकते हैं:

Sub GoToIssue() 

    Dim b As Object 
    Dim myrow As Integer 

    Dim hunt As String 

    Set b = ActiveSheet.Buttons(Application.Caller) 
    myrow = FindButtonRow(b) 

    hunt = Worksheets("Dummy").Range("F" & myrow).Value 

    'MsgBox hunt 

End Sub 
+0

एक आकर्षण की तरह काम करता है! धन्यवाद – Amostafa