iT邦幫忙

0

VBA表單輸入疑問

  • 分享至 

  • xImage

請教各位,我有一個VBA資料輸入的excel檔案,若要讓最後輸入的資料序號一直往前,之前輸入的資料序號一直往下,該如何寫語法?
例如依序輸入3/1、3/2、3/3,要如何在excel中呈現3/3在A2、3/2在A3、3/1在A4。
最近剛開始自學,向各位請教了!謝謝!

slime iT邦大師 1 級 ‧ 2020-04-01 08:08:10 檢舉
1. 對完成的資料產生序號.
2. 輸入的暫存區, 抓取完成區的序號+1
3a.
依暫存區筆數, 在完成區插入空白行, 再把暫存區資料搬到完成區空白行.
3b.
將暫存區附加於完成區下面, 再對完成區排序.
4. 確認完成再移除暫存區.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Neish
iT邦研究生 1 級 ‧ 2020-04-01 09:12:58
最佳解答

不是很懂你的需求

你指的"資料序號"是真的有一個序號 還是儲存格位置
(按內文例如依序輸入3/1、3/2、3/3,要如何在excel中呈現3/3在A2、3/2在A3、3/1在A4。)

假設你是指位置

都是在A1輸入值 輸入後會自動往下

那你可以寫成這樣

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Dim i As Integer
    
    '如果A1有輸入值
    If Range("A1") <> "" Then
    
        For i = Range("A65536").End(xlUp).Row To 1 Step -1
            '儲存格位置往下移
            Range("A" & i + 1) = Range("A" & i).Offset()
        Next
        
        '將A1清空
        Range("A1") = ""
        
    End If
    
End Sub
0
hugoxxx
iT邦新手 5 級 ‧ 2020-04-04 03:29:51

根本不用那麼麻煩,也不用寫回圈,邏輯上就是你每次最新輸入的欄位值,都跟A1第一個欄位值互換即可。

我要發表回答

立即登入回答