2013-05-10 66 views
1

如果我有一些VB組件在Excel中打開VBE,有一些文本高亮如圖所示,您能否以編程方式訪問Excel VBE選擇?

enter image description here

有沒有一種方法以編程方式搶文本 「zBool」?

Preferrably不使用的SendKeys

6X新西蘭Steinlager啤酒(一個很好的解決方案),另一個很好的解決

問:爲什麼黑羊吃的比白色的羊少了?

答:因爲沒有因爲其中許多

+1

你說的「抓住文本」是什麼意思?你想在運行代碼時看到zBool中的當前值嗎?試圖將某些東西複製到單元格中?或者你已經訴諸啤酒? – StevenWhite 2013-05-10 21:15:40

+0

不,我想要得到字面文本「zBool」,或當前在活動VBE窗口中突出顯示的任何文本。也許有一些代碼像StringVar = GetCurrentlyHighlightedVBEText() – mikebinz 2013-05-13 04:49:18

回答

6

添加引用爲 「Microsoft Visual Basic應用程序的可擴展性。」

Sub Tester() 

Dim oVBE As vbe 
Dim startLine As Long, startCol As Long 
Dim endLine As Long, endCol As Long 
Dim sContent As String, tmp As String, l As Long 
    Set oVBE = Application.vbe 

    oVBE.ActiveCodePane.GetSelection _ 
     startLine, startCol, endLine, endCol 

    For l = startLine To endLine 
     tmp = oVBE.ActiveCodePane.CodeModule.Lines(l, 1) 
     If l = endLine Then tmp = Left(tmp, endCol - 1) 
     If l = startLine Then tmp = Right(tmp, (Len(tmp) - startCol) + 1) 
     sContent = sContent & IIf(Len(sContent) > 0, Chr(10), "") & _ 
        tmp 
    Next l 


    Debug.Print sContent 

End Sub 

GetSelection方法: http://msdn.microsoft.com/en-us/library/aa443954(v=vs.60).aspx

請參閱此處瞭解如何使用返回的信息訪問實際文字: http://www.cpearson.com/excel/vbe.aspx(我確定它在某處...)

編輯 - 沒有,對你對我自己的教育...
我會把它放在你的標籤上;-)

+0

+ 1,但我會使用'CodeModule''查找'方法 – brettdj 2013-05-11 11:19:47

+0

感謝蒂姆,非常appreicated。我希望使用它作爲從項目中訪問項目的代碼文檔的一種方式,並且文檔也嵌入在項目中(如果有意義的話) – mikebinz 2013-05-13 05:04:54