Board logo

標題: [發問] 請教各位大哥關於vba [打印本頁]

作者: asd1251    時間: 2015-10-10 18:22     標題: 請教各位大哥關於vba

請教一下各位前輩,如以下程式,該如何完善它,對vba實在是一知半解,網上搜尋了很多例子,但實在是.....有心無力,煩請各位前輩抽空解答,謝謝
  1. Sub test()

  2. '1 選擇F欄第二列儲存格(迴圈)
  3. For i = 2 To 300
  4. Cells(i, "f").Select
  5.     If Cells(i, "f") <> "" Then
  6.         '2 取得F欄儲存格的值(aaa)
  7.         Dim var As String<<<<<<<<<這邊其實是我自己猜的
  8.         var = Cells(i, "f")<<<<<<<<<這邊其實是我自己猜的
  9.             '3 選擇第i列,剪下第i列
  10.             Rows(i).Select
  11.             Selection.Cut
  12.                 '4 選擇b工作表,移到F欄第二列
  13.                 Sheets("b").Select
  14.                 Range("F2").Select
  15.                 '5 搜尋b工作表F欄儲存格值(aaa) , 找出同樣的值,如果有同樣的值,就移到同值的最下一列,再下移一列,如果沒有同值,就移到f欄的最後一列
  16.                 這一段就完全不知道如何下手
  17.            

  18.                 '6 貼上整列
  19.                 Selection.Insert Shift:=xlDown
  20.                 '7選擇A工作表
  21.                 Sheets("A").Select               
  22.     Else
  23. Exit For
  24.     End If
  25. Next i

  26. End Sub
複製代碼

作者: 准提部林    時間: 2015-10-11 12:09

Sub AX1011()
Dim xR As Range, xE As Range, xF As Range
For Each xR In Range([A!F2], [A!F65536].End(xlUp))
  If xR = "" Then GoTo 101
  '↓取得B表最後一筆資料位置 
  Set xE = [B!F65536].End(xlUp)
  '↓尋找B表符合值最後一筆位置 
  Set xF = [B!F:F].Find(xR, After:=xE(2), SearchDirection:=xlPrevious, Lookat:=xlWhole)
  '↓若有找到符合值,下方插入一列,並將儲存格變數代換為xE 
  If Not xF Is Nothing Then xF(2).EntireRow.Insert: Set xE = xF
  '↓整列貼至xE的下一列 
  xR.EntireRow.Copy xE(2).EntireRow
101: Next
End Sub
作者: asd1251    時間: 2015-10-11 15:23

謝謝板主抽空解答,果然是高手~~
我來去研究研究,測試測試,
再次感謝
作者: asd1251    時間: 2015-10-11 16:34

回復 2# 准提部林


多學了一個For Each的用法 ,感謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)