Excel vba 利用定義名稱實現用戶登錄功能

2020-12-25 江覓易見

文/江覓易見

在vba 中實現用戶登錄,並對登錄用戶進行身份識別,然後對用戶進行分組管理,此類功能值得進一步思考。

這裡介紹一種方法,利用Excel中的名稱管理來進行身份識別,起到用戶登錄次數以及增減用戶的功能。

(文章附代碼,參考學習)

定義名稱在Excel中運用很方便,對於一些固定內容選擇用定義名稱來做下拉列表十分好,平時在做表格的時候經常會用到。

如何用定義名稱來對用戶進行管理

其實,名稱以隱式狀態存儲,一般情況下也不會去檢查是否存在,特別是一些剛學習excel的人來說,對此也並不十分了解。所以,在隱蔽性來說,有一點點可取之處。

具體方法就是,新建一個名稱,然後依次對名稱值進行累加,直到累加次數達到一定量就刪除名稱,也就是授權到期的意思,知道編程方法的人一定對此不陌生。

我做這個例子是一個循環累加,就是達到最大值後,又回到初始化0狀態。

實際應用及代碼

Excel似乎給我的感覺不十分嚴謹,就是說無論怎麼做都達到想要的閉環、隱匿邏輯,也就沒有所謂的秘密。以前經常破解word文檔密碼,感覺那種密碼真的是不太有效,通過製作vba編程,也達不到想要的保密狀態,所以,這個功能也只能是象徵性實現一下登錄的效果。

新建按鈕代碼

Private Sub CommandButton1_Click()

Dim xname As String

xname = InputBox("輸入名稱", "新建名稱", "Names")

xname = VBA.UCase(VBA.Trim(xname))

If VBA.IsNumeric(VBA.Left(xname, 1)) Then MsgBox "名稱第一個字符為字母或下劃線!", vbInformation, "提示": Exit Sub

If VBA.IsNumeric(xname) Then MsgBox "名稱不能數字!", vbInformation, "提示": Exit Sub

If VBA.Len(xname) = 0 Then MsgBox "空!": Exit Sub

Dim w As Workbook

Set w = ThisWorkbook

Dim na As Variant

Dim nArr()

Dim n As Integer, ni As Integer

ni = w.Names.Count

If ni = 0 Then

MsgBox "第1次新建名稱!", vbInformation, "新建名稱"

Call newAddName(xname, 1)

Me.Label1.Caption = "這是第 1 次登錄"

Exit Sub

End If

Dim x As Integer

Dim isIn As Boolean

isIn = False

For Each na In w.Names

If na.Name = xname Then

x = VBA.CInt(VBA.Right(na.Value, 1)) + 1

Call newAddName(xname, x)

MsgBox "這是第" & x & "次使用", vbInformation, "新建名稱"

Me.Label1.Caption = "這是第 " & x & " 次登錄"

If x > 2 Then

MsgBox "你已使用次數到期!", vbInformation, "提示"

delNames (na.Name)

Me.Label1.Caption = "你已使用次數到期! "

End If

isIn = True

End If

Next na

If Not isIn Then

Call newAddName(xname, 1)

MsgBox "這是第1次使用", vbInformation, "新建名稱"

Me.Label1.Caption = "這是第 1 次登錄"

End If

End Sub

刪除名稱代碼

特別注意:請謹慎使用下面的代碼,如果在打開其它excel文件的同時使用,有可能刪除掉你的定義名稱。

Dim na As Variant

For Each na In ThisWorkbook.Names

na.Delete

Next na

編後話:

最近一個月寫了一些文章,特別感謝那些提出問題,留言和反饋回來的朋友,很多問題可能不能及時發現,希望大家在應用的同時,修改一下,以解決在工作中遇到的各種困難。接下來會不斷總結一些小的經驗,分享出來,更多實用內容,盡請期待!

相關焦點

  • excel VBA是什麼?VBA編程入門教程
    本篇將介紹excel vba是什麼?vba編程入門教程,有興趣的朋友可以了解一下!一、excel vba是什麼?VBA的英文全稱是Visual Basic for Applications,是一門標準的宏語言。VBA語言不能單獨運行,只能被office軟體(如:Word、Excel等)所調用。
  • excel如何實現更改數據就自動填充顏色的功能?你需要用到它
    Hello,大家好,工作中是不是有遇到這樣的情況,當我們做好的表格發給領導後,領導修改了下說可以了,但是因為數據太多,不知道修改了哪裡,十分的鬱悶,今天就跟大家分享下在excel中如果別人更改了單元格就會自動的填充顏色實現這樣的功能我們需要使用excel中的vba代碼來實現
  • 「Python替代Excel Vba」系列(終):vba中調用Python
    腳本中導入定義 Python 方法首先定義一個對pandas的DataFrame進行過濾的方法。如下圖:df.query(where_exp) , 這個是主要的方法。DataFrame 的 query 方法支持用文本表達查詢,因此這裡直接傳入外部的字符串即可。其他的語句是為了防止沒有輸入任何查詢的情況。然後再定義一個做匯總的方法。
  • excel怎麼利用vba獲取單元格交叉範圍的數據
    excel中使用vba獲取多個單元格區域的交叉範圍  1、首先我們打開一個工作樣表作為例子。   3、實際上我們用vba可以方便的對這個區域作出選擇。MsgBox rng.Address  rng.Formula = "=rand()"  End Sub   4、先定義一下三個變量為區域變量
  • 用excel製作文件管理器,所有版本皆可使用
    Hello,大家好,之前跟大家分享了使用excel中的power query功能製作一個文件管理器,但是很多分析反應自己的excel版本不夠高,無法使用,今天就跟大家分享如何使用宏表函數製作文件管理器,他也是可以實現文件刷新的,這個的操作也不難,下面就讓我們來看下他是如何設置的一、什麼是宏表函數以及FILES函數
  • WPS這些功能,讓Excel也自嘆不如
    今天看了一篇關於excel power pivot插件的文章:很多人不知道Excel 20年來最大革新是Power Pivot,感嘆excel 新增功能的強悍之處,輕鬆應對excel處理百萬級別的數據,多表聯動也有了新的思路,但是在實際操作過程中遇到了出現了報錯,百度了一下,有可能因為之前安裝過
  • Vba第四十三課
    Vba第四十三課關於vba操作工作表、數組、字典等所有的基本功能如果大家仔細去學習、認真敲代碼的話,數據分析應該是入門,當然vba作vb的分支語言,在office的平臺上去運行還是大有作為的,更深層次的功能都相當不錯,而前面的課程所講的功能基本可以定義為少量數據的清洗運算功能,要達到數據分析的水平是遠遠不夠的,比如操作資料庫、自定義函數等等都是數據分析的一些必要技巧
  • 「Python替代Excel Vba」系列(二):pandas分組統計與操作Excel
    帶你用pandas玩轉各種數據處理前言在本系列的上一章已經介紹了如何讀寫 excel 數據,並快速進行匯總處理。但有些小夥伴看完之後有些疑惑:那只是簡單讀寫數據而已,有時候需要設置 excel 的格式。我用透視表不用寫代碼,兩三下也可以弄出結果來。今天,我就沿用上一章的數據,把需求升級一下,以解決上述疑點。
  • 你的第一行VBA代碼
    今天帶你寫第一行vba代碼1.新建啟用宏的工作簿:打開excel軟體,將文件保存為啟用宏的工作簿:2. 點擊「文件」-》「選項」,把開發工具選項卡加到頂部選項卡:3.去除個人信息設置:將隱私選項中的保存個人信息勾選框取消勾選。
  • Excel實現信息管理系統之數據錄入界面設計步驟詳解
    本身excel就是一款功能強大的數據信息管理和分析軟體,我們如果在它的基礎上在設計信息管理的功能感覺有點多此一舉。但是大家仔細想想,我們在excel錄入數據時,很多時候都是在單元格中直接輸入,亦或者使用excel記錄單錄入數據,然後再進行數據處理,這種方式對於大眾來講非常簡單快捷。但是如果我們處理的數據量大,錄入數據時有若干列,或者多人錄入時,這樣直接輸入真的會很便捷嗎?
  • 利用VBA代碼改變主窗口標題欄名稱和隱藏Excel主窗口
    NO.151-NO.154內容是:NO.151:恢復<Ctrl +C>組合鍵的正常功能NO.152:改變Caption屬性後改變主窗口標題欄默認名稱的辦法NO.153:恢復默認的標題欄名稱NO.154:隱藏Excel主窗口
  • WPS教程:excel新手入門VBA功能使用介紹
    Excel教學:今天和大家分享一下excel中vba的使用方法入門,相信很多使用該軟體的朋友們對此都很感興趣,下面就和大家來分享一下,希望可以幫助到大家。
  • 如何使用JavaScript實現前端導入和導出excel文件
    1.3 table表格的編輯功能實現table表格的編輯功能實現其實也很簡單, 我們只需要按照antd的table組件提供的自定義行和單元格的實現方式即可. antd官網上也有實現可編輯表格的實現方案, 如下: 大家感興趣的可以私下研究以下.
  • 泛微e-cology9.0表單建模功能-查詢列表批量導入與導出excel功能優化
    一、功能簡介表單建模查詢列表批量導入與導出excel功能改進點:一、批量導入1、批量導入支持多個欄位組合驗證重複,避免數據重複導入。例如項目列表批量導入追加數據,根據項目名稱與項目類型組合驗證唯一性,不允許導入重複數據。2、批量導入excel模板支持刪除無用列,可以只導入需要的欄位列,實現靈活導入數據。
  • excel操作技巧:「自定義名稱」應用基礎篇
    說到excel中的「自定義名稱」,那可就厲害了!它不僅能簡化函數公式,增加函數的可讀性,還能提高數據運行的效率,可謂是excel中的必會知識點!今天,我們就一起來了解一下「自定義名稱」。2.使用「名稱框」建立自定義名稱(輸入後記得按回車結束)。3.使用「根據所選內容創建」。
  • selenium自動化利用excel文件實現批量傳值
    selenium自動化測試的時候,經常會用到數據來做批量測試,常用的方式有讀取txt文件,xml文件,csv文件以及excel文件幾種,本文給大家講解一下在selenium 中如何利用excel文件實現批量傳值,python讀取excel主要用到xlrd庫,此庫可在pycharm手動下載此類庫
  • 「Excel技巧」Excel利用自定義序列實現英文字母編號自動填充
    平時的excel應用中,我們經常要生成有序的序列,或者說是編號。不過,大家最熟悉的應用應該是數字序列吧。想要生成數字序列,只要在輸入第一個數字後,按住ctrl鍵,滑鼠下拉填充,數字序列就順序生成了。但是,如果想要生成字母序列,你按生成數字序列的方式,試操作一下,會發現行不通的。
  • 利用VBA代碼,對Excel表格進行字體設置
    No.1字體設置是Excel或Word辦公軟體最簡單的操作,下面把所有字體對象的屬性羅列一遍,介紹一下,如何使用vba代碼進行相應的字體設置。下圖為字體對象Font的所有屬性。一共18個。下面重點看一下代碼,如何來實現。
  • 如何利用DOS批處理+Excel VBA實現智能辦公實例?
    我們學習DOS批處理是為了實現更高效更智能的辦公。今天我們來看看如何利用DOS批處理結合EXCEL來實現高效辦公吧。01我們來看個簡單的例子:任務要求:將c:\tmp\data.txt 打開、分列處理。篩選出零庫存。
  • vba第十七課
    vba第十七課with語句當對某一個對象執行一系列語句時,不用重複指出對象名稱例:用vba代碼進行排版,加上黑色邊框,設置行高為30,垂直居中,水平居中、字體大小為18,寬度自適應Sub with語句()With Sheets(1).Range("a1:f11") .Borders.ColorIndex