Board logo

標題: [發問] 如何自動編號 及刪除資料 [打印本頁]

作者: atuan207    時間: 2011-4-19 18:04     標題: 如何自動編號 及刪除資料

本帖最後由 atuan207 於 2011-4-19 18:07 編輯

各位板上的大大您好:
最近自己在做一個生日表的練習,是用vab寫成視窗化
可是目前有點卡關,不知道該如何讓它輸入的資料自己編號
大概的樣子像這樣
[attach]5554[/attach]
會輸入的資料只有B,C,D
不過想做成的表格格式像
[attach]5553[/attach]
Q1:
A資料是放學號,所以想讓他藉由B資料的新增而自動編排
可是對於取得資料端點這部份的語法不是很熟悉,
我有爬文爬到一篇"如何在A欄 自動填上編號" 連結=>http://forum.twbts.com/thread-926-1-36.html
當中老師使用的方法.SpecialCells(xlCellTypeConstants)<=這個有點不懂在做什麼的
所以想請教板上的大大
我自己有想個方法,是否可以藉由判讀B欄的內容,如果有值得話,則A欄位放值
或者是用FOR迴圈來做???不過FOR迴圈好像只有一開始會跑,如果要做在新增不知道恰不恰當
Q2:
因為刪除資料想用透過學號來判別,這部分不知道該如何做
刪除的語法Rows(1).delete 這是刪除第一列
如果想判讀輸入A的值後刪除相對應的,是不是該把(1)的值放成變數 EX Rows(a).delete 這樣做???
自己目前想的:
Private Sub Cbo刪除資料_Click()
     Dim a as Range
     Dim b as Range 'b值定義為A行的值
     If  a = b then
     row.(a).delet
     else
     MsgBox "查無此資料"
    End if
End Sub
是這樣嗎????

不好意思因為才剛自學大概三週
對於如何讓他判讀整行的方法還不會
想請教板上的大大
感謝
作者: FAlonso    時間: 2011-4-19 18:56

試試這個
A欄新增編號,自製按鈕
  1. Sub showserial()
  2. Range("A2:A65536").ClearContents
  3. Range("A2") = 1
  4. Range("A2:A" & Range("B65536").End(xlUp).Row).DataSeries
  5. End Sub
複製代碼
利用學號幹掉row(textbox1為自製userform物件中的成員,閣下的未必一樣)
  1. Private Sub CommandButton1_Click()
  2. Dim myrange As Range
  3. Set myrange = Columns("A:A").Find(TextBox1.Value)
  4. If IsError(myrange) Then
  5. Exit Sub
  6. Else
  7. Rows(myrange.Row).Delete
  8. End If
  9. End Sub
複製代碼
利用完幹掉row,最好重新編號才繼續
作者: GBKEE    時間: 2011-4-19 19:35

回復 2# FAlonso
If IsError(myrange) Then  應修改為  If myrange Is Nothing Then
作者: atuan207    時間: 2011-4-19 20:46

謝謝大大們的幫助,小弟看完大大的程式後有一些問題想問
我試著做一下註解釐清觀念 順便請教一下

自動編號的:
Range("A2:A65536").ClearContents
//是指從A2~An個欄位 clear這個是清除公式保留格式設定嗎???
Range("A2") = 1
//A2的為起點1
Range("A2:A" & Range("B65536").End(xlUp).Row).DataSeries
// A2:A  不懂  B(65536)是指B整行  .end(xlup)是指取得連續區域上端的值
//.DataSeries這行F1解釋為在指定範圍內建立資料數列。 但在這用的意思是??
刪除的:
Dim myrange As Range   //定義myrange
Set myrange = Columns("A:A").Find(TextBox1.Value)
//列("A:A")   "A:A"跟上面一樣不懂(應該是一樣的宣告方式) 尋找輸入txt的值
If myrange Is Nothing Then
Exit Sub
//如果沒事就離開
Else
Rows(myrange.Row).Delete
//否則就刪除myrange輸入的那列
End If

註解這樣對嗎????
編號的問題比較多,刪除的少一些
還麻煩大大糾正小弟的觀念
作者: FAlonso    時間: 2011-4-19 21:37

dataseries是製造數據列即學號
B行有幾多個就學號就計多少(不過你應該要修改一下這部份,因為刪掉的學號不再使用的話,需要以下程式)
  1. Sub showserial()
  2. Range("A" & [a65536].End(xlUp).Row & ":A" & Range("B65536").End(xlUp).Row).DataSeries
  3. End Sub
複製代碼

作者: atuan207    時間: 2011-4-19 23:36

謝謝FAlonso大大的解說
因為我也是昨天在搜尋資料才發現這加入的
所以權限還不足,還沒辦法回短消息,
信箱是帳號+yahoo
感謝FAlonso大大




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