Excel - Cari nombor tertentu dalam senarai?

Isu

Saya ingin mencipta makro dalam Excel seperti di bawah:
  • Apabila kita mengklik butang arahan, ia perlu meminta nombor memasukkan dalam kotak input.
  • Selepas memasukkan nombor itu, ia perlu membawa kami ke sel yang mempunyai nombor dan yang terakhir harus diisi dengan masa semasa.

Templat adalah seperti di bawah:

Apabila saya mengklik Perintah dan masukkan nombor 307304 dalam kotak input. ia harus membawa saya ke sel tertentu dan masa mula harus ditangkap. Jika saya mengklik lagi masa tamat harus ditangkap. (nilai-nilai ini akan digunakan untuk mengira masa semasa).

 Pekerja # Mula Masa Akhir Masa

307301

307302

307303

307304

307305

307306

307307

307308

307309

307310

Penyelesaian

Cuba ini. Rutin yang digunakan ialah doTimeStamp
  • Idea ini ialah anda akan menyambungkan rutin ini ke butang arahan. Apabila anda mengklik padanya, ia akan meminta emp id dan akan memasuki tarikh mula (jika kosong) atau tarikh tamat (jika kosong) dan kemudian meminta anda sekali lagi untuk id seterusnya. Ia akan meminta anda untuk id sehingga anda memasukkan kosong dan titik itu akan berhenti.

 Pilihan Eksplisit

Public Sub doTimeStamp ()

Kurang lRow As Long

Dim sSearchText Sebagai String

Dim lEmpID As Long

Dim sTgtSheet Sebagai String

'nama lembaran di mana id adalah

sTgtSheet = "Sheet1"

Lakukan

sSearchText = InputBox ("Sila Masukkan ID Kakitangan", "Rakaman Masa")

sSearchText = Trim (sSearchText)

Jika (sSearchText = vbNullString) _

Kemudian

'tiada data telah dimasukkan. kemudian berhenti

GoTo Loop_Bottom

Akhir Jika

Jika Tidak (IsNumeric (sSearchText)) _

Kemudian

'teks yang dimasukkan bukan angka.

MsgBox "ID Pekerja Tidak Sah. ID Pekerja hanya boleh angka. Cuba Lagi", vbExclamation + vbOKOnly

GoTo Loop_Bottom

Akhir Jika

Jika (InStr (1, sSearchText, ".")> 0) _

Kemudian

'teks dimasukkan mempunyai perpuluhan.

MsgBox "ID Pekerja Tidak Sah. ID Pekerja hanya boleh angka. Cuba Lagi", vbExclamation + vbOKOnly

GoTo Loop_Bottom

Akhir Jika

'cari baris dalam lajur 1

lRow = getItemLocation (sSearchText, Sheets (sTgtSheet) .Columns (1))

Jika (lRow = 0) _

Kemudian

'Carian tidak dikembalikan

MsgBox "ID Pekerja Tidak Ditemukan. Cuba Lagi", vbInformation + vbOKOnly

GoTo Loop_Bottom

Akhir Jika

Jika (Sheets (sTgtSheet) .Cells (lRow, "B") = vbNullString) _

Kemudian

'sel baris yang terdapat mempunyai lajur B kosong

Helaian (sTgtSheet) .Cells (lRow, "B") = Sekarang

ElseIf (Lembaran (sTgtSheet) .Cells (lRow, "C") = vbNullString) _

Kemudian

'sel baris yang terdapat mempunyai lajur C kosong

Helaian (sTgtSheet) .Cells (lRow, "C") = Sekarang

Lain

'sel baris yang terdapat mempunyai lajur B dan C yang diisi

MsgBox "Masa Mula dan Tamat telah direkodkan untuk Pekerja" & sSearchText, vbInformation + vbOKOnly

Akhir Jika

Loop_Bottom:

'gelung hingga sSearchText kosong

Loop While (sSearchText vbNullString)

Sub Akhir

Fungsi Awas getItemLocation (sLookFor As String, _

rngSearch As Range, _

BFullString Pilihan Sebagai Boolean = Benar, _

Pilihan bLastOccurance Sebagai Boolean = Benar, _

BFindRow Pilihan Sebagai Boolean = Benar) Seperti Panjang

'Untuk mencari baris / lajur / lajur pertama / terakhir dalam julat untuk rentetan tertentu

Dim Cell As Range

Dim iLookAt Sebagai Integer

Dim iSearchDir As Integer

Dim iSearchOdr As Integer

Jika (bFullString) _

Kemudian

iLookAt = xlWhole

Lain

iLookAt = xlPart

Akhir Jika

Jika (bLastOccurance) _

Kemudian

iSearchDir = xlPrevious

Lain

iSearchDir = xlNext

Akhir Jika

Jika Tidak (bFindRow) _

Kemudian

iSearchOdr = xlByColumns

Lain

iSearchOdr = xlByRows

Akhir Jika

Dengan rngSearch

Jika (bLastOccurance) _

Kemudian

Tetapkan Cell =. Cari (sLookFor, .Cells (1, 1), xlValues, iLookAt, iSearchOdr, iSearchDir)

Lain

Tetapkan Sel =. Cari (sLookFor, .Cells (.Rows.Count, .Columns.Count), xlValues, iLookAt, iSearchOdr, iSearchDir)

Akhir Jika

Akhir Dengan

Jika Sel Adakah Tiada Kemudian

getItemLocation = 0

ElseIf Not (bFindRow) _

Kemudian

getItemLocation = Cell.Column

Lain

getItemLocation = Cell.Row

Akhir Jika

Tetapkan Cell = Tiada apa-apa

Fungsi Akhir

Terima kasih kepada rizvisa1 untuk tip ini.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama