因此,我有workbook1(wbThis)和workbook2(wbTarget),並在wbThis'表單中填充了一些單元格。這些細胞具有的格式:使用VBA複製部分長度和內容都不相同的單元格
從A6
P2123:開始程序
A7
P1234:代碼
A8
P4456-6:文檔
|
V
(向下箭頭)
A27
它繼續這樣。現在我有兩個問題。
問題1我想複製PXXXxX:
(小x就像任意總和 - 或_或> etc等)代碼到wbTarget。此代碼因您所見而異,但總會有開頭爲「P」,結尾爲「:」。對此,我的代碼嘗試:
Dim wbThis As Workbook
Dim wbTarget As Workbook
Dim rowRng As Integer
Dim targetRowRng As Integer
For rowRng 6 To 27
For targetRowRng 14 To 35
If Left((A:rowRng).Value,1) = "P" Then
wbThis.Sheets("Sheet1").Range(A:rowRng).Copy
wbTarget.Sheets("Sheet1").Range(E:targetRowRng).PasteSpecial
End If
Next
Next
然而,正如你可能已經注意到,我沒有寫,我希望它結束的代碼「:」和所有內容複製插圖中(包括「 P「但不包括」:「)..我不知道如何編碼,我希望你的幫助。
由於PXXXxX的長度變化 - 是這樣的:
If Left((A:rowRng).Value,1) = "P" Then
If Left((A:rowRng).Value,5) = ":" Then
將無法正常工作,很遺憾。
Problem2現在沒有辦法到wbThis'範圍A6
的所有細胞 - >A27
將充滿每次有新的文檔,因爲我不想不必要的複製/粘貼我想腳本停止複製/粘貼PXXXxX:如果腳本在例如A16
中找不到P。 (如果沒有P,那麼沒有PXXXxX,那麼這個單元格將是空的,因此是冗餘的 - 這同樣適用於同一列中的它下面的所有單元格) 我想你可以使用else代碼來使用上面的If語句:
ElseIf
Pass 'Any code here that return to the rest of the script
雖然這看起來不正確,但我對此沒有多少發現。
Huzzah!有用!你能簡要地解釋一下'InStr'的功能。因爲我無法從代碼中弄清楚它,谷歌搜索結果並不能真正幫助我。謝謝。 –
@ this.guy - 請參閱[MSDN Instr](https://msdn.microsoft.com/en-us/library/8460tsh1(v = vs.90).aspx)文章。 –