返回列表 上一主題 發帖

[發問] EXCEL VBA 的問題

謝謝,請教,VBA的畫面中,您有使用即時監看視窗來輔助您的程序直行嗎

TOP

回復 11# idnoidno

我也只是一個初學者。有空時我會來這討論區看看其他大大的程式的做法。順便以其他人的問題來當成作業來作,看看自己學了多少(其實有很多人問題看都看不懂),所以我也會等其他大大的答案啦!所以大家一起研究

TOP

回復 11# idnoidno

是這一列嗎?
RngRow = 工作表1.Columns(Rng.Column).Find("*", , , , , xlPrevious).Row '尋找改欄的最後一個儲存格
其中,工作表1.Columns(Rng.Column)是尋找的範圍所對應的欄,我以動態循環來改變它尋找的範圍,以循環的第一次迴圈來說,它會搜尋"甲"那一欄最後有"值"的儲存格來傳回所對應的列號Row,我以萬用字元 * 來代表任何字串,xlPrevious是由下往上找,

  以下是擷取Excel說明Range.Find的說明給參考!
Excel 開發人員參考資料
Range.Find 方法
會尋找範圍中的特定資訊。
語法

運算式.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

運算式   代表 Range 物件的變數。

參數

名稱 必要/選用 資料類型 描述
What 必要 Variant 要搜尋的資料。可以為字串或任何 Microsoft Excel 資料類型。
After 選用 Variant 指定儲存格,搜尋將會從這個儲存格之後開始。這個儲存格對應於從使用者介面執行搜尋時的作用儲存格位置。注意,After 必須是範圍中的單一儲存格。請記住搜尋是從這個儲存格之後開始,因此必須等到該方法循環回到指定的儲存格時,才會搜尋其內容。如果沒有指定這個引數,則搜尋會從範圍左上角的儲存格之後開始。
LookIn 選用 Variant 資訊的類型。
LookAt 選用 Variant 可以為下列其中一個 XlLookAt 常數:xlWhole 或 xlPart。
SearchOrder 選用 Variant 可以為下列其中一個 XlSearchOrder 常數:xlByRows 或 xlByColumns。
SearchDirection 選用 XlSearchDirection 搜尋方向。
MatchCase 選用 Variant 如果為 True,則搜尋時會將大小寫視為相異。預設值為 False。
MatchByte 選用 Variant 只有當您已選取或安裝雙位元組語言支援時,才能使用。如果為 True,則雙位元組字元只能符合雙位元組字元。如果為 False,則雙位元組字元可符合對應的單位元組字元。
SearchFormat 選用 Variant 搜尋格式。

TOP

回復 9# lpk187

想就教,你的第3行的語法,是否可以稍做說明一下
謝謝

TOP

哇謝謝版主出手回應
小弟才學粗淺,可能要好好的研讀了
還是十分感謝版主

TOP

回復 7# idnoidno


    要如何線上,我不會耶!

TOP

回復 6# lpk187
  1. Sub ex()
  2. Dim Ar()
  3. Dim A As Range
  4. With 工作表1
  5. For Each A In .Range(.[B1], .[B1].End(xlToRight))
  6.    c = Application.Lookup(9.9E+307, A.EntireColumn)
  7.    d = Application.Lookup(9.9E+307, A.EntireColumn, .Columns("A"))
  8.    ReDim Preserve Ar(s)
  9.    Ar(s) = Array(A.Value, CDate(d), c)
  10.    s = s + 1
  11. Next
  12. With 工作表2
  13.    .UsedRange.ClearContents
  14.    .[A1].Resize(s, 3) = Application.Transpose(Application.Transpose(Ar))
  15. End With
  16. End With
  17. End Sub
複製代碼
學海無涯_不恥下問

TOP

大大,謝謝,可以和你線上請益依下嗎

TOP

回復 4# idnoidno

執行結果如下2圖
   

TOP

回復 4# idnoidno

我再執行一次,結果是你要的意思,不過我還是修改一下
  1. Sub 巨集1()
  2. n = 1
  3. For Each Rng In 工作表1.Range("B1", 工作表1.Cells(1, Columns.Count).End(xlToLeft).Address) '第一列"動態"讀取做循環
  4.     RngRow = 工作表1.Columns(Rng.Column).Find("*", , , , , xlPrevious).Row '尋找改欄的最後一個儲存格
  5.     工作表2.Cells(n, 1) = Rng
  6.     工作表2.Cells(n, 2) = 工作表1.Cells(RngRow, 1) '日期寫入工作表2
  7.     工作表2.Cells(n, 3) = 工作表1.Cells(RngRow, Rng.Column) '最後的數值寫入工作表2
  8.     n = n + 1
  9. Next
  10. End Sub
複製代碼
二、我程序是做動態循環,以你上傳的檔案去做的,依這個檔案只做了"甲乙丙"3次循環,所以你說的太多Loop是指3次太多嗎?

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題