पहले सक्रिय सेल - एक्सेल, वीबीए, घटनाएं

जिस कोड के लिए मैं लिख रहा हूं, उसके लिए मैं कुछ सेल श्रेणियों में परिवर्तनों और निजी subs चलाने के लिए परिवर्तनों की निगरानी करता हूं। इसके लिए मैं इंटरसेक्ट फ़ंक्शन का उपयोग करता हूं worksheet_change उप।

हालांकि, छेड़छाड़ के लिए ट्रिगर हमेशा "परीक्षण" है कि मैं उस सेल के "बाहर निकलता हूं" जिसके लिए मैं परीक्षण कर रहा हूं कि यह "एक अलग सेल में या कर्सर चाल के माध्यम से माउसक्लिक के माध्यम से हो।

मुझे जो वैरिएबल परिभाषित करना है उसे परिभाषित करने का एक तरीका है .address सेल का मैंने पहले चुना था।

मैंने नीचे दिए गए कोड की कोशिश की, लेकिन मुझे जो कुछ मिलता है वह त्रुटियां है।

क्या किसी को पता है कि यह कैसे करें?

Public xfrLastCell As String
Public xfrActiveCell As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If xfrActiveCell = "" Then xfrActiveCell = ActiveCell.Address
xfrLastCell = xfrActiveCell
xfrActiveCell = ActiveCell
MsgBox xfrLastCell

End Sub

उत्तर:

जवाब के लिए 2 № 1

नीचे कोड मेरे लिए काम करता है - सक्रियसेल के आपके असाइनमेंट में एक पता गुम था जिसका अर्थ है सक्रियसेल चर हमेशा खाली है

Option Explicit

Public xfrLastCell As String
Public xfrActiveCell As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If xfrActiveCell = "" Then xfrActiveCell = ActiveCell.Address
xfrLastCell = xfrActiveCell
xfrActiveCell = ActiveCell.Address
MsgBox xfrLastCell

End Sub

उत्तर № 2 के लिए 1

इस कोड के साथ, संदर्भ PreviousActiveCell वांछित परिणाम वापस कर देंगे:

Public PreviousActiveCell as Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static pPrevious as Range
Set PreviousActiveCell = pPrevious
Set pPrevious = ActiveCell
End Sub

यह एकल वर्कशीट के अंदर काम करता है। क्या आपको अन्य चादरों और कार्यपुस्तिकाओं में पिछले सेल की आवश्यकता है?


जवाब के लिए 0 № 3

सीमा के पते की बजाय रेंज को "याद रखना" आसान हो सकता है:

Dim Oldcell As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Oldcell Is Nothing Then
Set Oldcell = Target
Exit Sub
End If
MsgBox "New cell is " & Target.Address & vbCrLf & "Old cell was " & Oldcell.Address
Set Oldcell = Target
End Sub

जवाब के लिए 0 № 4

If अनावश्यक है मैंने इसका इस्तेमाल किया है:

Public sPreviousTarget As String
Public sTarget As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sPreviousTarget = sTarget
sTarget = Target.Address
End Sub

इसके अलावा, Target से अलग है ActiveCell (ActiveCell में से एक कोशिका को संदर्भित करता है Target)।


संबंधित सवाल
सबसे लोकप्रिय