国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
復制用戶窗體文本框里的數(shù)據(jù)
通常,我們可以在選擇要復制的文本后,按Ctrl+C組合鍵來復制文本。下面通過兩個簡單的示例介紹如何使用VBA代碼復制用戶窗體文本框中的文本數(shù)據(jù)。
示例一:如下圖1所示,在示例窗體中有一個文本框和一個命令按鈕。當窗體被激活時,文本框中自動顯示文字“完美Excel”,單擊“復制文本”按鈕后,將文本框中的數(shù)據(jù)復制到剪貼板。

圖1:帶有文本框和命令按鈕的用戶窗體
首先,按圖1設(shè)計好用戶窗體界面。然后,在該用戶窗體模塊中,輸入下列代碼:
Dim myClipboard As New DataObject Private Sub UserForm_Activate()Me.TextBox1.Value = "完美Excel"End Sub Private Sub CommandButton1_Click()With myClipboard.SetText Me.TextBox1.Text.PutInClipboardEnd WithEnd Sub

示例二:在用戶窗體中有多個文本框,要求單擊按鈕后將含有數(shù)據(jù)的文本框中的數(shù)據(jù)全部復制到剪貼板。用戶窗體如下圖2所示,含有6個文本框。


圖2:帶有多個文本框的用戶窗體
首先,按圖2設(shè)計好用戶窗體界面。然后,在用戶窗體模塊中,輸入下列代碼:

Dim strUnion As String Private Sub CommandButton1_Click()Dim dObj As DataObjectWith MeIf Not .TextBox1 = Empty Then strUnion = strUnion & .TextBox1If Not .TextBox2 = Empty Then strUnion = strUnion & vbCrLf & .TextBox2If Not .TextBox3 = Empty Then strUnion = strUnion & vbCrLf & .TextBox3If Not .TextBox4 = Empty Then strUnion = strUnion & vbCrLf & .TextBox4If Not .TextBox5 = Empty Then strUnion = strUnion & vbCrLf & .TextBox5If Not .TextBox6 = Empty Then strUnion = strUnion & vbCrLf & .TextBox6End With Set dObj = New DataObject dObj.SetText strUnion, 1dObj.PutInClipboardEnd Sub

說明與擴展
下面對示例中涉及到的主要對象及其屬性、方法進行簡單的介紹和整理,并進行一些擴展(也可參考VBA幫助)。
本文雖然題為復制文框框中的數(shù)據(jù),但DataObject對象也可應(yīng)用到其他的用戶窗體控件中。

  • DataObject 對象
    DataObject對象能夠像“剪貼板”一樣保存一段文本格式的文本,并能為每種附加的文本格式(例如用戶定義的格式)保存一段文本。
    DataObject對象的工作方式與“剪貼板”很相像。如果將一串文本復制到DataObject對象,DataObject 對象將保存該文本。如果將相同格式的第二段文本復制到該DataObject對象,則DataObject對象將清除前一文本,并保存第二段的文本。對于每種指定的格式,它保存一段從最近一次操作得到的文本。
    但DataObject對象又與“剪貼板”不同,DataObject支持與“剪貼板”及文本的拖放操作有關(guān)的命令。在開始進行與“剪貼板”有關(guān)的操作(如GetText)或拖放操作時,與該操作有關(guān)的數(shù)據(jù)會被移到DataObject對象中。
    DataObject對象具有下列方法:

     

    • SetText方法:使用特定的格式復制文本串到DataObject對象中。
    • GetText方法:使用特定的格式在DataObject對象中檢索文本串。
    • GetFormat方法:返回的值表示DataObject對象中是否有指定的格式。
    • StartDrag方法:初始化針對DataObject的拖放操作。
    • GetFromClipboard:從剪貼板復制數(shù)據(jù)到DataObject對象。
    • PutInClipboard:將數(shù)據(jù)從DataObject對象移到剪貼板上。
    • Clear方法:刪除DataObject對象中的所有對象。

     

  • GetFormat方法、GetText方法 和SetText方法示例
    本示例使用GetFormat方法、GetText方法和SetText方法在DataObject對象和剪貼板之間傳輸文本。
    示例窗體如下圖3所示,帶有一個文本框TextBox1,四個命令按鈕CommandButton1、CommandButton2、CommandButton3和CommandButton,以及一個標簽Label1。用戶把文本鍵入文本框然后單擊命令按鈕CommandButton1,把文本以標準文本格式傳輸?shù)紻ataObject對象。單擊命令按鈕CommandButton2,在DataObject對象中檢索文本。單擊命令按鈕CommandButton3,用自定義格式把文本從文本框TextBox1復制到DataObject對象。單擊命令按鈕CommandButton4,用自定義格式在DataObject對象中檢索文本。

    圖3:演示GetFormat、GetText、SetText方法的用戶窗體
    窗體模塊中的代碼為:

     

    Dim MyDataObject As DataObject         Private Sub CommandButton1_Click()    '把標準格式放到剪貼板上        If TextBox1.TextLength > 0 Then    Set MyDataObject = New DataObject    MyDataObject.SetText TextBox1.Text    Label1.Caption = "放置到DataObject中"    CommandButton2.Enabled = True    CommandButton4.Enabled = False    End If    End Sub         Private Sub CommandButton2_Click()    '從剪切板得到標準格式        If MyDataObject.GetFormat(1) = True Then    Label1.Caption = "標準格式 - " _    & MyDataObject.GetText(1)    End If    End Sub         Private Sub CommandButton3_Click()    '把自定義格式放到剪切板上        If TextBox1.TextLength > 0 Then    Set MyDataObject = New DataObject    MyDataObject.SetText TextBox1.Text, 233    Label1.Caption = "在DataObject中的自定義格式"    CommandButton4.Enabled = True    CommandButton2.Enabled = False    End If    End Sub         Private Sub CommandButton4_Click()    '從剪切板得到自定義格式        If MyDataObject.GetFormat(233) = True Then    Label1.Caption = "自定義格式 - " _    & MyDataObject.GetText(233)    End If    End Sub         Private Sub UserForm_Initialize()    CommandButton2.Enabled = False    CommandButton4.Enabled = False    End Sub

     

  • Copy方法、GetFromClipboard方法、GetText方法和DataObject對象示例
    本示例演示從文本框到剪貼板,從剪貼板到DataObject對象以及從DataObject對象到另一個文本框的數(shù)據(jù)移動。GetFromClipboard方法把數(shù)據(jù)從剪貼板傳輸?shù)紻ataObject對象。該示例還使用了Copy方法和GetText方法。
    示例窗體如下圖4所示,帶有兩個文本框和一個命令按鈕。單擊命令按鈕,將把文本從一個文本框移至另一個文本框。

    圖4:Copy、GetFromClipboard、GetText和DataObject對象示例窗體
    窗體模塊中的代碼如下:

     

    Dim MyData as DataObject         Private Sub CommandButton1_Click()    '在把文本復制到剪切板之前,需要選定一段文本        TextBox1.SelStart = 0    TextBox1.SelLength = TextBox1.TextLength    TextBox1.Copy         MyData.GetFromClipboard    TextBox2.Text = MyData.GetText(1)    End Sub         Private Sub UserForm_Initialize()    Set MyData = New DataObject    TextBox1.Text = "移動數(shù)據(jù)到剪貼板,然后到DataObject,接著到另一文本框!"    End Sub

     

  • 列表框控件、DataObject對象、MouseMove事件和StartDrag方法、SetText方法示例
    本示例使用DataObject對象來包含拖動文本,演示從一個列表框到另一個列表框的拖放操作。在MouseMove事件中使用SetText方法和StartDrag方法來完成拖放操作。
    示例窗體如下圖5所示,帶有兩個列表框。

    圖5:從一個列表框中拖動數(shù)據(jù)并放置到另一個列表框中
    窗體模塊代碼如下:

     

    Private Sub ListBox2_BeforeDragOver(ByVal Cancel As _    MSForms.ReturnBoolean, ByVal Data As _    MSForms.DataObject, ByVal X As Single, _    ByVal Y As Single, ByVal DragState As Long, _    ByVal Effect As MSForms.ReturnEffect, _    ByVal Shift As Integer)    Cancel = True    Effect = 1    End Sub         Private Sub ListBox2_BeforeDropOrPaste(ByVal _    Cancel As MSForms.ReturnBoolean, _    ByVal Action As Long, ByVal Data As _    MSForms.DataObject, ByVal X As Single, _    ByVal Y As Single, ByVal Effect As _    MSForms.ReturnEffect, ByVal Shift As Integer)    Cancel = True    Effect = 1    ListBox2.AddItem Data.GetText    End Sub         Private Sub ListBox1_MouseMove(ByVal Button As _    Integer, ByVal Shift As Integer, ByVal X As _    Single, ByVal Y As Single)    Dim MyDataObject As DataObject    If Button = 1 Then    Set MyDataObject = New DataObject    Dim Effect As Integer    MyDataObject.SetText ListBox1.Value    Effect = MyDataObject.StartDrag    End If    End Sub         Private Sub UserForm_Initialize()    Dim i As Long    For i = 1 To 10    ListBox1.AddItem "Choice " _    & (ListBox1.ListCount + 1)    Next i    End Sub

     

  • DataObject對象和“剪貼板”的區(qū)別
    DataObject對象和“剪貼板”都提供了將數(shù)據(jù)從一處移到另一處的方法。作為應(yīng)用程序開發(fā)人員,無論是使用DataObject對象還是使用“剪貼板”,都要記住下列幾項要點:

     

    • 只要各項數(shù)據(jù)具有不同的數(shù)據(jù)格式,DataObject對象和“剪貼板”就都可以同時保存多項數(shù)據(jù)。但是如果已經(jīng)有數(shù)據(jù)使用了要保存數(shù)據(jù)的格式,則保存這個新數(shù)據(jù),并丟棄原來的數(shù)據(jù)。
    • “剪貼板”支持圖片格式和文本格式。而DataObject對象目前只支持文本格式。
    • 只有應(yīng)用程序運行時,DataObject對象才存在;而“剪貼板”則是始終運行的(與正在運行的操作系統(tǒng)同時存在)。這意味著,將數(shù)據(jù)放到“剪貼板”后,如果關(guān)閉了應(yīng)用程序,“剪貼板”上的數(shù)據(jù)不會丟失。DataObject對象則沒有這個功能。如果關(guān)閉應(yīng)用程序,該應(yīng)用程序放置在DataObject對象上的數(shù)據(jù)就會丟失。
    • DataObject對象是一個標準的OLE對象,而“剪貼板”不是。這意味著,“剪貼板”支持標準的移動操作(復制、剪切和粘貼),但不支持拖放操作。如果需要應(yīng)用程序支持拖放操作,就必須使用DataObject對象。

      提示 當用SetText方法將數(shù)據(jù)移動到“剪貼板”或DataObject對象時,可定義自己的數(shù)據(jù)格式名稱。這樣便于區(qū)分是應(yīng)用程序移動的文本還是用戶移動的文本。

示例文檔下載:

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VBA窗體-搭建一個簡單的登錄界面
vbaCommandButton 常用屬性+方法記錄:
VBA常用代碼解析(第三十二講)
文本框控件的主要屬性
Excel之VBA常用功能應(yīng)用篇:復制剪貼板內(nèi)容到工作表中
VBA編程,如何實現(xiàn)窗體間值傳遞,認真學好這一篇,真的不難
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服