Board logo

標題: [發問] 關於資料寫入儲存格的方式 [打印本頁]

作者: feecshyrnd    時間: 2016-1-15 22:26     標題: 關於資料寫入儲存格的方式


小弟想在公司的EXCEL檔案裡加入個人獨立帳密登入方式
目前是每登入一次,會寫入一筆資料
反之是登入錯誤也會寫入資料
小弟目前遇到的問題是 登入錯誤無法跟正確登入一樣 持續往下一列寫入資料
而是在同一儲存格裡覆蓋原有資料
能否請各位高手幫小弟解惑呢???

[attach]23120[/attach]
作者: negotiator    時間: 2016-1-16 08:08

可以貼程式碼嗎?無法下載檔案
作者: feecshyrnd    時間: 2016-1-16 10:09

麻煩各位高手幫忙了,紅色部份是小弟想要增加判斷寫入儲存格的地方


Private Sub CommandButton1_Click()
Sheet2.Visible = True
Sheets("交接事項").Activate
Dim UserId As String
Dim N As Long
Dim FD As Range
Set FD = Range("a65536").End(xlUp).Offset(1, 0)
Dim Ar, a1, i% '此處宣告3個欄位
a1 = TextBox1
Ar = Array(a1)  '欄位儲存於陣列
UserId = TextBox1.Value
If UserId = "" Then
  MsgBox "請輸入ID"
  GoTo 101
  End If
For N = 1 To 300
  
   If Sheet3.Cells(N, 5).Value = UserId Then
            If Sheet3.Cells(N, 6).Value = TextBox2.Value Then
            MsgBox "登入成功"
if a1 <> "" Then  '判斷所有值都不等於空白
       i = 2   '第一列開始
       Do Until Cells(i, 1) = ""  'A欄為空白則停止迴圈
       i = i + 1  '向下一列
       Loop
       Cells(i, 3).Resize(, 1) = Ar  'A欄空白向右擴展成欄位數量

FD = Date  '往右一格寫入當前時間
FD.Offset(0, 1) = Time '往右二格寫入txtID的資料

    End If
            UserForm1.Hide
            GoTo 101
            Else
   MsgBox "登入失敗"

       i = 2   '第一列開始
       Do Until Cells(i, 1) = ""  'A欄為空白則停止迴圈
       i = i + 1  '向下一列
       Loop
       Cells(i, 10).Resize(, 1) = Ar  'A欄空白向右擴展成欄位數量

FD.Offset(0, 8) = Date '往右一格寫入當前時間
FD.Offset(0, 9) = Time '往右二格寫入txtID的資料


    End If
        
            GoTo 101
            Exit For
            End If
  end if   
  Next
GoTo 100

100
MsgBox "帳號錯誤"
'GoTo 1100 '為統計登入正確或強制登入記錄,故登入錯誤也列入資料
UserForm1.TextBox2.Value = ""
UserForm1.TextBox1.Value = ""
'Sheets("sheet1").Activate '停留在登入頁面避免跑到帳密頁面
Exit Sub

101
UserForm1.Hide

UserForm1.TextBox1.Value = ""
UserForm1.TextBox2.Value = ""

'Sheets("sheet1").Activate '停留在登入頁面避免跑到帳密頁面

End Sub

Private Sub CommandButton2_Click()
UserForm1.Hide
UserForm1.TextBox1.Value = ""
UserForm1.TextBox2.Value = ""
End Sub
作者: 准提部林    時間: 2016-1-17 17:09

Private Sub CommandButton1_Click()
Dim PassWD, xE1 As Range, xE2 As Range, T$
If TextBox1 = "" Then MsgBox "請輸入ID": Exit Sub
If TextBox2 = "" Then MsgBox "請輸入密碼": Exit Sub
 
Set xE1 = [交接事項!A65536].End(xlUp)(2)
Set xE2 = [交接事項!I65536].End(xlUp)(2)
 
PassWD = Application.VLookup(TextBox1, [Sheet3!E:F], 2, 0)
If IsError(PassWD) Then T = "ID錯誤"
If T = "" Then If PassWD & "" <> TextBox2.Text Then T = "密碼錯誤"
If T <> "" Then
  xE2.Resize(1, 4) = Array(Date, Time, TextBox1, T):  MsgBox T: GoTo 999
End If
 
xE1.Resize(1, 3) = Array(Date, Time, TextBox1): MsgBox "登入成功"
 
999:
If xE1.Row > 4500 Or xE2.Row > 4500 Then MsgBox "記錄量過大,請清理舊記錄!"
End Sub
 

====================================
TextBox2 的〔屬性.PasswordChar〕設為 "*",字設〔黑色〕,
輸入密碼時,自動顯示為〔****〕
作者: feecshyrnd    時間: 2016-1-19 20:40

回復 4# 准提部林


准大的程式碼 讓小弟我這位初學者 獲益良多

沒想到我那一拖拉庫的程式碼可以縮減那麼多 感謝准大

學習了:)




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