返回列表 上一主題 發帖

[發問] 求助建立迴圈應用

回復 12# linsurvey2005

這句SourceWb.Close 0  是用來關掉  開啟的檔案嗎?

SourceWb.Close 0 -> SourceWb.Close False ( 檔案關閉:  不儲存檔案)
SourceWb.Close 1 -> SourceWb.Close True   (檔案關閉:  儲存檔案)

回復 13# linsurvey2005

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 15# linsurvey2005
不了解你的涵義: 13# 資料顯示合併為A1:C50,G1:H50(D1:E50的資料已被G1:H50蓋過),我想讓資料合併為A1:E50,G1:H50
ctrl+相對儲存格數目 => 選取多重的範圍
修改Hsieh超版  11#的程式碼試試看
  1. Option Explicit
  2. Sub Selection_Copy()
  3.     Dim fs$, SRng As Range, SourceWb As Workbook, r As Integer, k As Range, myfilename As String
  4.     On Error Resume Next
  5.     fs = Application.GetOpenFilename("Excel 檔案(*.xls),*.xls")
  6.     Set SourceWb = Workbooks.Open(fs)
  7.     Set k = Application.InputBox("請選取欲複製的範圍", , , , , , , 8)       '物件:Range
  8.     If Err.Number <> 0 Then GoTo 10                                         '取消InputBox的輸入->k不為物件會有錯誤
  9.     With Workbooks.Add.Sheets(1)                                            '物件:新增活頁簿的第1個工作表
  10.         '新增活頁簿時,作用中的活頁簿會移到此新增活頁簿
  11.         SourceWb.Activate                                                    '作用中的活頁簿:此活頁簿
  12.         Do
  13.             For Each SRng In k.Areas                                         'Areas 集合,此集合代表多重範圍中的所有範圍
  14.                 r = Application.Max(12, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
  15.                 .Cells(r, 1).Resize(SRng.Rows.Count, SRng.Columns.Count) = SRng.Value
  16.             Next
  17.             If MsgBox("是否繼續", vbYesNo) = vbNo Then Exit Do
  18.             Set k = Application.InputBox("請選取欲複製的範圍", , , , , , , 8)
  19.             If Err.Number <> 0 Then Exit Do                                   '取消InputBox的輸入->k不為物件會有錯誤
  20.         Loop
  21.         .Activate
  22.         DoEvents
  23.         myfilename = Format(Date, "yymmdd") & "-Tilt-PDA.xls"
  24.         Application.SendKeys myfilename, True
  25.        fs = Application.GetSaveAsFilename("E:\")
  26.         If fs <> False Then .Parent.SaveAs fs
  27.         .Parent.Close 0
  28.     End With
  29. 10:
  30.     SourceWb.Close 0
  31. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 17# linsurvey2005

[  看的一頭霧水  ]
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 19# linsurvey2005
還是 [  看的一頭霧水  ],尚缺: 1.資料檔,2.完成檔(你的構想) 的範例.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 21# linsurvey2005
再試試看
  1. Option Explicit
  2. Sub Selection_Copy()
  3.     Dim fs As String, Nwb As Workbook, SourceWb As Workbook, R As Integer, k As Range, myfilename As String
  4.     On Error GoTo 11                                                                                 '程執行式如有錯誤.到 標記12:處裡
  5.     fs = Application.GetOpenFilename("Excel 檔案(*.xls),*.xls")
  6.     If fs = "False" Then Exit Sub
  7.     Set SourceWb = Workbooks.Open(fs)
  8.     Set k = Application.InputBox("選取傾斜->墩柱編號,里程,方向及初使值,前次監測值", Type:=8)        '物件:Range:如取消InputBox的輸入->k不為物件錯誤值=1004
  9.     Set Nwb = Workbooks.Add
  10.     With Nwb.Sheets(1)                                                                              '物件:新增活頁簿的第1個工作表
  11.         '新增活頁簿時,作用中的活頁簿會移到此新增活頁簿
  12.         SourceWb.Activate                                                                           '作用中的活頁簿:此活頁簿(SourceWb)
  13.         Do
  14.             R = Application.Max(3, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
  15.             k.Copy .Cells(R, 1)                                                                     '複製所選起的的範圍
  16.             If MsgBox("是否繼續", vbYesNo) = vbNo Then Exit Do
  17.             Set k = Application.InputBox("選取傾斜->墩柱編號,里程,方向及初使值,前次監測值", Type:=8) '物件:Range:如取消InputBox的輸入->k不為物件錯誤值=1004
  18.         Loop
  19. 9:
  20.         .Activate
  21.         DoEvents
  22.         myfilename = Format(Date, "yymmdd") & "-Tilt-PDA.xls"
  23.         Application.SendKeys myfilename, True
  24.         fs = Application.GetSaveAsFilename("E:\")
  25.         If fs <> False Then .Parent.SaveAs fs
  26.         .Parent.Close 0
  27.     End With
  28. 10:
  29.     SourceWb.Close 0
  30.     Exit Sub
  31. 11:
  32.     If Err = 424 Then
  33.         If Nwb.Sheets(1).UsedRange.Rows.Count > 1 Then GoTo 9                                         '已有選擇範圍過:新增活頁簿需存檔
  34.         GoTo 10
  35.     End If
  36.     k.Select
  37.     MsgBox "所選的 " & k.Areas.Count & " 範圍:不在同一列上,列數不相等", , "不可複製!!"
  38.     Resume Next                                                                                          '回到程式碼錯誤行的下一行
  39. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題