彰化一整天的論壇

 找回密碼
 立即註冊
搜索
查看: 169|回復: 3

判斷刪除欄位該怎麼半

[複製鏈接]
發表於 2017-7-12 13:11:23 | 顯示全部樓層 |閱讀模式
使用下列方式可以透過標標題的判斷去刪除,
但是需要執行兩次才可以刪除下列兩個條件, 請問以下程式碼是哪有撰寫上邏輯有誤嗎?
煩請樓主指導謝謝


Sub 巨集1()
' 快速鍵: Ctrl+u
''============================移除Remark.LOAPrice整欄======
moji = "LOA Price"
'MsgBox "從使用中儲存格後開始尋找含有" & moji & "文字的儲存格"
Set iti = Cells.Find(What:=moji, After:=ActiveCell)
If iti Is Nothing Then
'MsgBox "找不到您想要找的資料"
Else
iti.Activate
End If

f = "LOA Price"
r = "LOAPrice"
'MsgBox "將使用中儲存格內的 " & f & " 置換為 " & r
moji = ActiveCell.Value
moji2 = Replace(moji, f, r, 1, , 1)
ActiveCell.Value = moji2

Dim DD, YY, XX As String
YY = "Remark" '刪除Remark的欄位
XX = "LOAPrice" '刪除LOAPrice的欄位
  For i = 1 To 10
  Cells(1, i).Select
  DD = Cells(1, i).Value
  'MsgBox DD
      If YY Like DD Then
      Columns(i).Select
      Selection.Delete Shift:=xlToLeft
      ElseIf XX Like DD Then
      Columns(i).Select
      Selection.Delete Shift:=xlToLeft
      Else
      End If

    Next i


''============================移除Remark.LOAPrice整欄======
End Sub



boomm(14).xlsm (79.5 KB, 下載次數: 27)
回復

使用道具 舉報

發表於 2017-7-12 14:15:13 | 顯示全部樓層
本帖最後由 imingho 於 2017-7-12 14:20 編輯

請您把
      For i = 1 To 10改成
     for i= 10 to 1 step -1
再執行看看.

  1. Sub 巨集1()
  2.     ' 快速鍵: Ctrl+u
  3.     ''============================移除Remark.LOAPrice整欄======
  4.     moji = "LOA Price"
  5.     'MsgBox "從使用中儲存格後開始尋找含有" & moji & "文字的儲存格"
  6.     Set iti = Cells.Find(What:=moji, After:=ActiveCell)
  7.     If iti Is Nothing Then
  8.     'MsgBox "找不到您想要找的資料"
  9.     Else
  10.         iti.Activate
  11.     End If
  12.    
  13.     f = "LOA Price"
  14.     r = "LOAPrice"
  15.     'MsgBox "將使用中儲存格內的 " & f & " 置換為 " & r
  16.     moji = ActiveCell.Value
  17.     moji2 = Replace(moji, f, r, 1, , 1)
  18.     ActiveCell.Value = moji2
  19.    
  20.     Dim DD, YY, XX As String
  21.     YY = "Remark" '刪除Remark的欄位
  22.     XX = "LOAPrice" '刪除LOAPrice的欄位
  23.       For i = 10 To 1 Step -1
  24.         Cells(1, i).Select
  25.         DD = Cells(1, i).Value
  26.       'MsgBox DD
  27.           If YY Like DD Then
  28.             Columns(i).Select
  29.             Selection.Delete Shift:=xlToLeft
  30.           ElseIf XX Like DD Then
  31.             Columns(i).Select
  32.             Selection.Delete Shift:=xlToLeft
  33.           Else
  34.           End If
  35.    
  36.         Next i
  37.         
  38.         
  39.     ''============================移除Remark.LOAPrice整欄======
  40. End Sub
複製代碼



boomm-20170712.xlsm

78.66 KB, 下載次數: 0

售價: 1 金錢  [記錄]  [購買]

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2017-7-12 18:04:58 | 顯示全部樓層
imingho 發表於 2017-7-12 14:15
請您把
      For i = 1 To 10改成
     for i= 10 to 1 step -1

可以了非常感謝樓主

此段的意思我不太理解可以解惑嗎?
回復 支持 反對

使用道具 舉報

發表於 2017-7-12 21:30:59 | 顯示全部樓層
JayLiang 發表於 2017-7-12 18:04
可以了非常感謝樓主

此段的意思我不太理解可以解惑嗎?

您要刪除的二筆資料連在一起.才會發生這種情形.
因為刪除欄位,原本右方的欄位會變成往前變成目前您刪除的欄位,您的迴圈執行後,會自動加1,變成連續的第2筆不會被刪除,所以您才要執行2次,若您是從右往前執行,就不會有這種情形發生。
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2018-1-16 19:36 , Processed in 0.070864 second(s), 12 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表