Board logo

標題: [發問] 尋找空白格選取整列,並貼上i列 [打印本頁]

作者: PJChen    時間: 2019-10-29 22:29     標題: 尋找空白格選取整列,並貼上i列

Dear 大大 好,

我需要一個尋找空白格並以當列選取整列,並貼上i列的功能,
程式卡在Set xRng = Range("F:F").Find("") & i
無法執行,請幫忙看下語法要怎麼改?
感謝....
  1. Sub 測試II()
  2. Dim i As String
  3.         Workbooks("最新庫存.xlsx").Sheets("隨手貼").Activate
  4.             Range("A4").EntireRow.Select '指定儲存格選取整列
  5.             Selection.Copy   '''''''''''''''''''''''依選取列數 複製後插入列,Selection不能用其它寫法
  6.                 Workbooks("最新庫存.xlsx").Sheets("日誌").Activate
  7.                     i = Workbooks("最新庫存.xlsx").Sheets("可出至中午").Range("A3").Rows.Count '看A3開始,共有幾筆資料
  8.                     [color=Red]Set xRng = Range("F:F").Find("") & i[/color]  '從F的空白格選取一整列,以i的筆數 貼上i列
  9.                     xRng.EntireRow.Select '選取該欄一整列, Select/Selection.Copy的用法不能換其它用法,會出錯
  10.                      Selection.Paste
  11.                     Application.CutCopyMode = False '使來源的copy的虛線閃動停止
  12.                     Application.DisplayAlerts = False '在程序執行過程中使出現的警告框不顯示
  13.                     ActiveWorkbook.Save '**存檔不關閉
  14. End Sub
複製代碼

作者: hcm19522    時間: 2019-10-30 12:16

https://blog.xuite.net/hcm19522/twblog/588527018
作者: n7822123    時間: 2019-11-1 11:52

本帖最後由 n7822123 於 2019-11-1 11:54 編輯

回復 1# PJChen


Set xRng = Range("F:F").Find("") & i

i 是多餘的,改成下面看看,發問最好配上附件,不然別人沒辦法幫你測試

Set xRng = Range("F:F").Find("")
作者: PJChen    時間: 2019-11-1 21:38

回復 2# hcm19522
真的感謝你的回覆,但礙於這個功能我需要用VBA,所以....
雖然我看函數的應用頗吸引我,不過我看不懂您所回覆的執行結果,跟我的主題的關聯,
如不麻煩的話,可以解說下嗎?雖然它不能用在我這裡的需求,但我希望可以硏究下它的用法!

回復 3# n7822123

要貼到"日誌"的資料分為3種類型 廠缺,統昶,過允
我以統昶為範本(這裡每個儲存格都有公式)想把公式整列貼過去,所以要選取整列
指定儲存A4選取整列
要copy的筆數隨"可出至中午"的A3….一直到A欄的最後一筆資料為止(資料會變動)
例如:"可出至中午"的A欄A3:A6 共有4筆資料
那麼這裡A4的資料就copy到"日誌"
因為"日誌"工作表也是有資料的,貼的時候以F欄作判讀
尋找空白格開始貼4筆
貼完後的後續程式,我想自己應該可以完成,所以後面的我就沒有提了,
但前面所說的這一段,我試了許多種方法,都無法讓它
尋找空白格並以當列選取整列,並貼上i列的功能
所以才需要請 能者 幫幫忙….

[attach]31369[/attach]
作者: 准提部林    時間: 2019-11-2 09:42

本帖最後由 准提部林 於 2019-11-2 09:43 編輯

"可出至中午" 與 "隨手貼" 的料號有何關係???
類型>> 廠缺,統昶,過允 >> 還有其它類型嗎???
作者: PJChen    時間: 2019-11-2 22:56

回復 5# 准提部林

"可出至中午" 與 "隨手貼" 的料號有何關係???

Ans: 隨手貼 內的三種類型>> 廠缺,統昶,過允 其實就是三種報表
有設定公式,但檔案中我把公式值化了, "隨手貼"算是一個公式範本,所以料號是無關聯的,只是為了方便轉貼公式用,

但3種類型的作業時間不一樣,廠缺 在早上做,統昶,過允是在下午才會做,所以不能同時執行這3種程式
作者: 准提部林    時間: 2019-11-3 09:59

避免錯誤, 寫得囉嗦些, 多一些偵錯:
Sub 複製公式()
Dim R&, T$, xA As Range, xB As Range, xE As Range
With Sheets("可出至中午")
     R = .[A65536].End(xlUp).Row - 2 '要複製的筆數
     If R <= 0 Then MsgBox "無料號!  ": Exit Sub
     If .[B2] = "已複製" Then MsgBox "已複製過, 請確認!  ": Exit Sub
     T = .[C2] '公式來源
     If T = "" Then MsgBox "請輸入公式來源!  ": Exit Sub
     Set xA = .[A3].Resize(R) '料號範圍
End With
'------------------------------------
Set xB = [隨手貼!B:B].Find(T, Lookat:=xlWhole)
If xB Is Nothing Then MsgBox "公式來源錯誤!  ": Exit Sub
Set xB = [隨手貼!A1:O1].Offset(xB.Row - 1, 0) '公式來源行
'-----------------------------------
Set xE = [日誌!B65536].End(xlUp)(2) 'B欄找最後一筆,並定位下一空白行(2)
xB.Copy xE(1, 0).Resize(R) '複製公式-->A欄(B欄的左1格)
xE(1, 5).Resize(R) = xA.Value '填入料號-->F欄(B欄的右5欄)
[可出至中午!B2] = "已複製" '標示[已複製]避免重覆作業, 要複製新的料號, 先清除B2
End Sub

[attach]31372[/attach]


=======================================
作者: PJChen    時間: 2019-11-3 11:39

回復 7# 准提部林
感謝...我測試看看...
不過網頁上原本會有訊息提醒功能,這幾天發現都沒有提醒了...
作者: PJChen    時間: 2019-11-5 16:55

回復 7# 准提部林

准大,
檔案經測試後,發生一些問題,是我沒有說得明白....
1) 您原先將篩選設定在"可出至中午"sheet中,因為這個工作表也是一個報表,
所以不能設定在這裡,若移到"隨手貼"就完美了,但我不知道怎麼改??
2) 另外...廠缺、統昶、過允的3個公式,它的"貼料號"都各有其來源,並非全來自"可出至中午"sheet,
所以公式也要修正
3) 所有貼在"日誌"中的料號,它是每天都可能發生但不一定發生,所以也不能設定重複就不貼.
4)  統昶、過允因為作業時間不同,所以不能在同一支程式中
5) 我所有的程式都寫在Macro.xlsm中執行,所以不會跟這些檔放在一起.

公式        來源sheet       
廠缺        廠缺表        這個表的內容很複雜,不好意思請您幫忙了,怕你看得太痛苦!我知道以你的段數看到這個報表一定翻白眼了^^
統昶        可出至中午        複製公式後,把來源sheet的A欄料號貼到"日誌"的F欄
過允        過允        複製公式後,把來源sheet的B欄料號貼到"日誌"的F欄

[attach]31386[/attach]
作者: 准提部林    時間: 2019-11-8 10:27

回復 9# PJChen

自行研究下, 再更改為實際需求:
[attach]31395[/attach]
作者: PJChen    時間: 2019-11-8 20:35

回復 10# 准提部林

好的, 感謝...




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)