मैं सूत्र बार में एक कस्टम राइट क्लिक मेनू बनाने की कोशिश कर रहा हूं (जो एक सेल के अंदर सही क्लिक करते समय दिखाई देता है, उदाहरण के लिए टाइपिंग)। मैंने अपने दाएं क्लिक में इच्छित बटन प्राप्त करने में कामयाब रहा है, लेकिन मुझे यह नहीं पता कि सेल के अंदर कर्सर कहां स्थित है।एक सेल में कर्सर की स्थिति प्राप्त करें
उदाहरण के लिए, यदि कर्सर सेल में 5 वें चरित्र के बाद है, तो मैं यह कैसे निर्धारित कर सकता हूं कि पहले या इससे पहले के पहले क्लिक करेंक्लिक घटना होती है? मुझे मिली एकमात्र चीज विपरीत समस्या थी; सेल के एक विशिष्ट भाग में कर्सर रखकर, SendKeys का उपयोग कर:
'===================================================================================
'- MOVE CURSOR IN THE FORMULA BAR AS REQUIRED
'- Brian Baulsom September 2007
'===================================================================================
Sub test()
Dim c As Integer
c = 3
'------------------------------------------------------------------------------
Range("A1").Select ' select cell
SendKeys "{F2}", True ' activate formula bar. cursor is to right of contents.
DoEvents
'------------------------------------------------------------------------------
'- move cursor 3 characters to the left in the formula bar
'- or in the cell if Tools/Options/Edit .. "Edit directly in cell" is checked
SendKeys "{LEFT " & CStr(c) & "}", True ' ="{LEFT 3}"
DoEvents
End Sub
'-----------------------------------------------------------------------------------
source: http://www.mrexcel.com/forum/excel-questions/282172-setting-cursor-position-cell-text-using-visual-basic-applications.html
अंतिम लक्ष्य यह संभव कुछ मानक सबस्ट्रिंग जबकि सेल में टाइप सम्मिलित करने के लिए बनाने के लिए है। उदाहरण के लिए, मैं सेल में टाइप करते समय राइट क्लिक का उपयोग करके [hi this is standard string X-XXX-XXXX]
डालना चाहता हूं।
संपादित करें:
मैं SendKeys का उपयोग कर की कोशिश की मेरी स्ट्रिंग सीधे भेजने के लिए है, लेकिन मैं सिर्फ यह दर्शाता है कि यह संभव नहीं है एक्सेल से एक "पिंग" ध्वनि मिलता है।
With fbar.Controls.add(Temporary:=True, Type:=msoControlButton, Before:=1)
.BeginGroup = False
.FaceId = 267
.Caption = wsLabels.GetLabel("rcRefMoM")
.OnAction = "'" & ThisWorkbook.Name & "'!'rcAddRef2 '"
End With
Function rcAddRef2()
SendKeys (" [Ref:X \NAME]")
End Function
संपादित करें 2:: यह मैं क्या कोशिश की थी वास्तव में यह बिल्कुल भी मेरी rcAddRef2 समारोह में प्रवेश नहीं करता, यह सिर्फ सीधे क्योंकि मैं संपादन मोड में कर रहा हूँ पिंग्स। यदि मैं वहां एक डालता हूं तो यह ब्रेक पॉइंट को सक्रिय नहीं करता है। इसलिए Sendkeys समस्या नहीं हो सकती है, जितना कार्य चलाने के लिए।
यह सेल आदेश पट्टी में बारीक थोड़ा काम करता है अगर मैं इसे करने की कोशिश, तो मैं कर रहा हूँ एक नुकसान में:
'This runs
With cbar.Controls.add(Temporary:=True, Type:=msoControlButton, Before:=1)
.BeginGroup = False
.FaceId = 267
.Caption = wsLabels.GetLabel("rcRefMoM")
.OnAction = "'" & ThisWorkbook.Name & "'!'rcAddRef2 '"
End With
मैंने बस कुछ सोचा था ... क्या मैं सीधे पाठ को टाइप करने के लिए SendKeys का उपयोग कर सकता हूं, बिना कर्सर की स्थिति को जांच किए बिना? क्या यह एक मजबूत दृष्टिकोण माना जाता है? संपादित करें: –
काम नहीं किया है क्या मेरी धारणा है या आप [autocorrect व्यवहार] की नकल करने की कोशिश कर रहे हैं (http://www.techonthenet.com/excel/questions/auto_correct2010.php) किसी भी तरह? – Sgdva
मैं 'SendKeys' को एक मजबूत दृष्टिकोण पर विचार नहीं करता। बस मैक्रो चल रहा है, जबकि किसी को लिखने की कल्पना करो। यदि आपको अधिक नियंत्रण की आवश्यकता है क्योंकि उपयोगकर्ता टाइप कर रहा है तो टेक्स्टबॉक्स के साथ कस्टम फॉर्म का उपयोग क्यों न करें? टेक्स्टबॉक्स के वर्तमान मूल्य में पूर्वनिर्धारित पाठ जोड़ने के लिए 'डबलक्लिक' और 'माउसडाउन' समेत सभी प्रकार की घटनाएं हैं। – Ralph