返回列表 上一主題 發帖

請問:關於修改VBA語法

請問:關於修改VBA語法

Dear 先進,

VBA語法如下,語法內有把"空白"都給刪除
我想把"若遇到A欄列空白時,不要刪除",請問是要修正哪一段語法呢?

感謝各位!

Sub Step1()
'刪除 key word : 公司 / 單別: / 日期* / 產品大類: / 核准 / 合計* / 統計*
Dim reg As Object, a, rng As Range, z&
a = Range("a1:a" & Cells(Rows.Count, 1).End(3).Row).Value
z = UBound(a)
Set rng = Rows(z + 1)
Set reg = CreateObject("vbscript.regexp")
With reg
    .Pattern = "空白|公司|單別:|日期|產品大類:|核准|合計|總計"
    For i = 1 To z
        If Len(a(i, 1)) = 0 Or .test(a(i, 1)) Then
            Set rng = Union(rng, Rows(i))
        End If
    Next
End With
rng.Delete
Set rng = Nothing
End Sub
Just do it.

回復 2# ikboy
Dear 謝謝您的回覆,
下列語法是將A欄列若有出現關鍵字時,就刪除該列
但我想把其中一個關鍵字"空白"-->若遇A欄列為空白時,就不要刪除
我改了
原本:    .Pattern = "空白|公司|單別:|日期|產品大類:|核准|合計|總計"
更改:    .Pattern = "公司|單別:|日期|產品大類:|核准|合計|總計"
但A欄列空白該列也會一併刪除
是否哪一段VBA語法需做修改呢?








Sub Step1()
'刪除 key word : 公司 / 單別: / 日期* / 產品大類: / 核准 / 合計* / 統計*
Dim reg As Object, a, rng As Range, z&
a = Range("a1:a" & Cells(Rows.Count, 1).End(3).Row).Value
z = UBound(a)
Set rng = Rows(z + 1)
Set reg = CreateObject("vbscript.regexp")
With reg
    .Pattern = "空白|公司|單別:|日期|產品大類:|核准|合計|總計"
    For i = 1 To z
        If Len(a(i, 1)) = 0 Or .test(a(i, 1)) Then
            Set rng = Union(rng, Rows(i))
        End If
    Next
End With
rng.Delete
Set rng = Nothing
End Sub
Just do it.

TOP

[版主管理留言]
  • GBKEE(2018/2/3 13:45): 附檔看看

回復 4# GBKEE
感謝版主的回覆
TEST OK

我再把您分享的VBA語法改成
只要B欄列出現"領料"或是"領用",就整欄列給予刪除
執行後,B欄列會刪除"領料"或是"領用"
但仍會有一些"領料"或是"領用"的B欄列仍存在,刪除不乾淨
是否哪裡需修訂?
感恩


Sub Step2()
'刪除關鍵字-B欄列--> 領料 領用
    Dim key_word$, E As Range, Rng As Range
    key_word = "/領用/領料/"
    For Each E In Range("b1:b" & Cells(Rows.Count, 1).End(3).Row)
        If InStr(key_word, "/" & E & "/") Then
            If Rng Is Nothing Then
                Set Rng = E
            Else
                Set Rng = Union(Rng, E)
            End If
        End If
    Next
    If Not Rng Is Nothing Then Rng.EntireRow.Delete

End Sub
Just do it.

TOP

回復 4# GBKEE
Dear 版主

附檔案 TT.rar (82.91 KB)

執行step2,會有移除不乾淨的畫面


最終的資料是希望
1.可以刪除不必要的欄列
2.另外在A欄下將有空白之欄位其日期自動與上一欄位一樣


謝謝您
Just do it.

TOP

回復 7# GBKEE
Deae 版主,
TEST OK,您真的好神歐
真的很感謝您的幫忙!
Just do it.

TOP

回復 7# GBKEE
Dear 版主
我用您教導VBA去執行,與我自己用手動刪除後之結果數據有差異

VBA執行後加總J欄位庫存數據
VBA.jpg
   
手動刪除欄列,加總J欄位庫存數據
手.jpg

附檔案
TT.rar (144.61 KB)

請幫忙看一下!感恩!
Just do it.

TOP

回復 10# GBKEE
Dear 版主,TEST OK
另外請教一下,哪一段語法是將A欄列日期下空白欄時為自動複製上一欄日期?
Just do it.

TOP

回復 12# GBKEE
Dear 版主,
謝謝您的指導
Just do it.

TOP

回復 12# GBKEE
Dear 版主
抱歉再與您請教一個問題,我想把整理過後之資料copy到另一工作表(這工作表的資料是持續有資料累計的,資料只會變更多)
要怎麼用VBA寫至該工作表
工作表"VBA"從A欄到H欄要COPY到工作表"資料庫"中
*原工作表"資料庫"中的資料仍要保留
    TT-2.rar (139.92 KB)
Just do it.

TOP

回復 15# GBKEE
Dear 版大您好,
很抱歉一直請教您問題。
您可以幫我單獨寫一個(我想先學習這一部分)

資料copy到另一工作表(這工作表的資料是持續有資料累計的,資料只會變更多)
要怎麼用VBA寫至該工作表
工作表"VBA"從A欄到H欄要COPY到工作表"資料庫"中
*原工作表"資料庫"中的資料仍要保留

檔案如附件

TT-2.rar (140.07 KB)
Just do it.

TOP

        靜思自在 : 欣賞別人就是莊嚴自己。
返回列表 上一主題