返回列表 上一主題 發帖

[發問] 資料合併後加到剪貼簿

[發問] 資料合併後加到剪貼簿

本帖最後由 joslau 於 2013-9-30 17:17 編輯

我想使用者自行選取所需資料後
再將選取資料合併
但中間加一個逗號

401234567
412345678
423456789
434567891

即使用者選取了以上資料後變成以下這樣加到剪貼簿 :

401234567,412345678,423456789,434567891
行數每次也是不一樣的
EXCEL內容可以不變

這樣做需要VBA嗎?

先謝!

回復 1# joslau
  1. Sub Ex()
  2.   Dim rngSelect As Range, sMerge As String
  3.   
  4. SELECT_RANGE_AGAIN:
  5.   On Error Resume Next
  6.   Set rngSelect = Application.InputBox(prompt:="請選擇單列範圍或單欄範圍", Default:=Selection.Address, Type:=8)
  7.   On Error GoTo 0
  8.   If rngSelect Is Nothing Then Exit Sub
  9.   rngSelect.Select
  10.   
  11.   With rngSelect
  12.     If .Rows.Count = 1 And .Columns.Count = 1 Then  '單格
  13.       sMerge = rngSelect.Value
  14.     ElseIf .Rows.Count = 1 And .Columns.Count > 1 Then  '單列
  15.       sMerge = Join(Application.Transpose(Application.Transpose(rngSelect.Value)), ",")
  16.     ElseIf .Rows.Count > 1 And .Columns.Count = 1 Then  '單欄
  17.       sMerge = Join(Application.Transpose(rngSelect.Value), ",")
  18.     Else
  19.       GoTo SELECT_RANGE_AGAIN
  20.     End If
  21.   End With
  22.   
  23.   With New DataObject '需引用 Microsoft Form Object Library
  24.     .SetText sMerge
  25.     .PutInClipboard
  26.   End With
  27. End Sub
複製代碼

TOP

請問 stillfish 大大
Excel 2010 版沒有 Microsoft Form Object Library 嗎?
引用中怎沒有 選項

TOP

回復 3# wufonna
插入一個空白表單,再看看是否自動引用了;如果還是沒有,手動瀏覽加入 C:\windows\system32\FM20.DLL。

TOP

感謝!!!

我正研究不用彈出msgbox的可行性

TOP

研究完~~~

我將
  1.   Set rngSelect = Application.InputBox(prompt:="請選擇單列範圍或單欄範圍", Default:=Selection.Address, Type:=8)
複製代碼
改做
  1.   Set rngSelect = Selection
複製代碼
現在不用顯示inputBox了

再次感謝stillfish00! m(_ _)m

TOP

謝謝 stillfish 大 加入表單就可了

請問 大大
手動加入是指這樣嗎
ThisWorkbook.VBProject.References.AddFromFile "C:\windows\system32\FM20.DLL"
謝謝

TOP

回復 8# wufonna
我是指VB編輯器>工具>設定引用項目>瀏覽,自己選該檔案,但跟你這code應該是同樣意思

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題