iT邦幫忙

1

EXCEL VBA找第一筆資料

https://ithelp.ithome.com.tw/upload/images/20190616/20118250hld9RaPCyM.png

請問iT的高手,以下程式碼("C7:BG7")的範圍,要如何修改成尋找第一個星期一,並貼上("C49:BG49")的值:

Sub Arrange_Shift_03()
Set theWS_shift = Sheets("班表")
Sheets("班表選擇").Select
Sheets("班表選擇").Range("C3:C59").Select
Selection.Copy
Sheets("班表").Select
Sheets("班表").Range("C49").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True

theWS_shift.Range("C49:BG49").Copy
theWS_shift.Range("C7:BG7").PasteSpecial Paste:=xlPasteValues

End Sub

跟這題做法很像,只是「六」改成「一」。
https://ithelp.ithome.com.tw/questions/10194066

錄製巨集會有一些贅句,需要手動去優化。
行2~4 合併
Sheets("班表選擇").Range("C3:C59").Copy
小魚 iT邦大師 1 級 ‧ 2019-06-17 08:10:01 檢舉
那是同一個人問的,
你要自己去思考,
這些都只是基本的語法拚湊出來的而已,
如果沒辦法自己解決就不要繼續做這個了.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Neish
iT邦研究生 1 級 ‧ 2019-06-17 09:03:12

把這兩行
theWS_shift.Range("C49:BG49").Copy
theWS_shift.Range("C7:BG7").PasteSpecial Paste:=xlPasteValues

改成下面這樣試看看吧

Dim find_row As Integer

-- theWS_shift.Columns("B:B").Find("一").Row 找出星期一在哪一列
find_row = theWS_shift.Columns("B:B").Find("一").Row

theWS_shift.Range("C49:BG49").Copy
theWS_shift.Range("B" & find_row).PasteSpecial Paste:=xlPasteValues

建議您把整個問題需求提出來詢問

不然一個個單點破關 可能最後也達不到您想要的結果

no1kent iT邦新手 5 級 ‧ 2019-06-17 09:38:57 檢舉

謝謝,因為剛開始學VBA,所以有些重複的東西還不懂,所以才一直發問,想看看到底哪裡不一樣。

問之前先Google

小魚 iT邦大師 1 級 ‧ 2019-06-17 13:21:53 檢舉

我看他連基本的程式邏輯都搞不清楚,
Google也沒什麼用...

0
小魚
iT邦大師 1 級 ‧ 2019-06-17 13:18:51

有想認真學的話,
你應該要從基礎開始學,
感覺你對程式的邏輯很沒有概念,
VBA已經算是一種程式語言了,
雖然只能用在Office,
你應該去找一本Excel VBA的書,
仔細將整本書看完並一個一個實作,

另外,
Excel VBA可以利用 中斷點 及 F8逐步偵錯,
來做Debug的動作,
並且可以在 監看式 中看到當前的變數值,
來判斷是否跟自己要的資料有出入.

我要發表回答

立即登入回答