Excel_VBA編程

在Excel中,VBA(Visual Basic for Applications)是一種強大的工具,可以用來自動化各種任務。下面介紹一些常用的VBA函數和程序結構:

常用函數

  1. MsgBox:用于顯示消息框。

    MsgBox "Hello, World!"
    
  2. InputBox:用于顯示輸入框,接收用戶輸入。

    Dim userInput As String
    userInput = InputBox("Enter your name:")
    
  3. Range:用于引用單元格或單元格區域。

    Range("A1").Value = "Hello"
    
  4. Cells:用于引用特定行列的單元格。

    Cells(1, 1).Value = "Hello"
    
  5. Worksheets:用于引用特定工作表。

    Worksheets("Sheet1").Range("A1").Value = "Hello"
    
  6. Application:用于引用Excel應用程序對象。

    Application.Workbooks.Open "C:\Path\To\File.xlsx"
    
  7. If…Then…Else:條件語句。

    If Range("A1").Value = "Hello" ThenMsgBox "Greeting found!"
    ElseMsgBox "Greeting not found."
    End If
    
  8. For Each…Next:循環遍歷集合。

    Dim ws As Worksheet
    For Each ws In WorksheetsMsgBox ws.Name
    Next ws
    
  9. For…Next:計數循環。

    Dim i As Integer
    For i = 1 To 10Cells(i, 1).Value = i
    Next i
    
  10. Do…Loop:條件循環。

    Dim i As Integer
    i = 1
    Do While i <= 10Cells(i, 1).Value = ii = i + 1
    Loop
    

程序結構

  1. Sub過程:Sub過程是執行特定任務的一組代碼,不返回值。

    Sub SayHello()MsgBox "Hello, World!"
    End Sub
    
  2. Function過程:Function過程類似于Sub過程,但可以返回值。

    Function AddNumbers(a As Integer, b As Integer) As IntegerAddNumbers = a + b
    End Function
    
  3. 模塊:模塊是VBA代碼的容器,可以包含多個Sub和Function過程。

    ' 這是一個模塊
    Sub Main()Call SayHelloMsgBox AddNumbers(2, 3)
    End SubSub SayHello()MsgBox "Hello, World!"
    End SubFunction AddNumbers(a As Integer, b As Integer) As IntegerAddNumbers = a + b
    End Function
    
  4. 事件過程:事件過程是響應特定事件的Sub過程,如工作簿打開、單元格改變等。

    Private Sub Workbook_Open()MsgBox "Workbook opened!"
    End SubPrivate Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$A$1" ThenMsgBox "Cell A1 has changed!"End If
    End Sub
    

示例

下面是一個綜合使用上述函數和結構的VBA示例:

Sub ProcessData()' 定義變量Dim ws As WorksheetDim total As Doubletotal = 0' 遍歷所有工作表For Each ws In Worksheets' 遍歷工作表中的每一行Dim i As IntegerFor i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row' 將第一列的值累加到總數total = total + ws.Cells(i, 1).ValueNext iNext ws' 顯示總數MsgBox "The total is " & total
End Sub

這個例子演示了如何遍歷所有工作表,累加每個工作表中第一列的值,并顯示總數。

通過熟練掌握這些VBA函數和程序結構,您可以編寫強大且靈活的Excel自動化腳本。

創建按鈕

在Excel中,可以通過VBA創建一個按鈕,并設置它的點擊事件以執行特定的操作,比如生成文件并寫入內容。下面是詳細步驟:

1. 創建按鈕

  1. 打開Excel工作簿。
  2. 轉到“開發工具”選項卡。如果沒有看到“開發工具”選項卡,可以通過“文件” -> “選項” -> “自定義功能區”來啟用它。
  3. 在“開發工具”選項卡中,點擊“插入”,選擇“按鈕(窗體控件)”。
  4. 在工作表中繪制一個按鈕。
  5. 繪制按鈕后,會自動彈出“指定宏”對話框。為按鈕創建一個新的宏,命名為ButtonClick,然后點擊“確定”。

2. 編寫宏代碼

在Excel VBA編輯器(按Alt + F11打開)中編寫宏代碼。以下是一個示例宏,按下按鈕后生成一個文件并寫入內容:

Sub ButtonClick()' 定義文件路徑和名稱Dim filePath As StringfilePath = "C:\Path\To\Your\File.txt"' 打開文件以寫入Dim fileNum As IntegerfileNum = FreeFileOpen filePath For Output As #fileNum' 寫入內容Print #fileNum, "This is the first line."Print #fileNum, "This is the second line."' 關閉文件Close #fileNum' 提示用戶文件已生成MsgBox "File has been created at " & filePath
End Sub

3. 連接按鈕和宏

  1. 回到Excel工作表,右鍵點擊剛創建的按鈕,選擇“指定宏”。
  2. 選擇ButtonClick宏,然后點擊“確定”。

4. 運行宏

現在,當您點擊按鈕時,宏將會執行,生成一個文件并寫入指定內容。

示例解釋

  • filePath定義了文件的路徑和名稱。
  • FreeFile函數用于獲取一個未使用的文件編號。
  • Open語句打開指定文件進行輸出。
  • Print語句將內容寫入文件。
  • Close語句關閉文件。

通過這些步驟,您可以在Excel中創建一個按鈕,并在按下按鈕時生成文件并寫入內容。您可以根據需要修改宏代碼,以實現不同的功能和文件格式。

在VBA編程中,DimSub是兩個非常重要的關鍵字,分別用于變量聲明和子過程定義。下面詳細介紹它們的用法和相關概念。

Dim 關鍵字

Dim(Dimension 的縮寫)用于聲明變量。它指定變量的名稱和數據類型。變量聲明有助于分配內存和提高代碼的可讀性和維護性。

基本語法
Dim variableName As DataType
示例
Dim i As Integer
Dim name As String
Dim isActive As Boolean
Dim startDate As Date
Dim values() As Double ' 數組聲明
變量作用域

變量的作用域取決于它聲明的位置:

  1. 局部變量:在過程(Sub或Function)內聲明,僅在該過程內有效。

    Sub ExampleSub()Dim localVar As IntegerlocalVar = 10MsgBox localVar
    End Sub
    
  2. 模塊級變量:在模塊頂部(任何過程外)聲明,模塊內的所有過程都能訪問。

    Dim moduleVar As IntegerSub ExampleSub1()moduleVar = 10
    End SubSub ExampleSub2()MsgBox moduleVar
    End Sub
    
  3. 全局變量:使用Public關鍵字聲明,所有模塊中的所有過程都能訪問。

    Public globalVar As IntegerSub ExampleSub1()globalVar = 10
    End SubSub ExampleSub2()MsgBox globalVar
    End Sub
    

Sub 關鍵字

Sub(Subroutine 的縮寫)用于定義一個子過程,它是一組執行特定任務的代碼塊。子過程不返回值。

基本語法
Sub ProcedureName([parameters])' 過程體
End Sub
示例
Sub SayHello()MsgBox "Hello, World!"
End SubSub AddNumbers(a As Integer, b As Integer)MsgBox a + b
End Sub
參數

子過程可以接受參數,參數可以是可選的,也可以是必需的。

Sub GreetUser(name As String)MsgBox "Hello, " & name
End SubSub GreetUserOptional(Optional name As String = "Guest")MsgBox "Hello, " & name
End Sub

示例:結合DimSub

下面是一個結合DimSub的示例,展示如何聲明變量并在子過程內使用它們。

Sub ProcessData()' 聲明變量Dim i As IntegerDim total As DoubleDim ws As Worksheet' 初始化變量total = 0' 遍歷所有工作表For Each ws In Worksheets' 遍歷工作表中的每一行For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row' 累加第一列的值total = total + ws.Cells(i, 1).ValueNext iNext ws' 顯示總數MsgBox "The total is " & total
End Sub

詳細示例:結合按鈕和自動化任務

我們結合前面的內容,演示一個完整的例子,創建按鈕、聲明變量、定義子過程,并將第一列的十進制數轉換為十六進制數并顯示在第二列。

創建按鈕并連接宏
  1. 在Excel中創建一個按鈕,并命名宏為ButtonClick
編寫宏代碼
Sub ButtonClick()' 定義變量Dim i As IntegerDim decValue As VariantDim hexValue As StringDim lastRow As Long' 確定第一列中最后一個有數據的單元格行號lastRow = Cells(Rows.Count, 1).End(xlUp).Row' 遍歷第一列中的所有行For i = 1 To lastRow' 獲取第一列的值decValue = Cells(i, 1).Value' 檢查是否是數字If IsNumeric(decValue) Then' 將十進制值轉換為十六進制hexValue = WorksheetFunction.Dec2Hex(decValue)' 在第二列中顯示對應的十六進制值并加上前綴0xCells(i, 2).Value = "0x" & hexValueElse' 如果不是數字,則清空第二列的值Cells(i, 2).Value = ""End IfNext i
End Sub

通過這些詳細的解釋和示例,您應該能夠理解DimSub的用法,并在VBA編程中靈活運用它們。

數據類型

在VBA中,Dim關鍵字用于聲明變量,可以定義多種數據類型。每種數據類型都有其特定的用途和適用場景。以下是一些常見的數據類型及其使用方法:

常見數據類型

  1. Integer

    • 用于存儲整數,范圍是 -32,768 到 32,767。
    Dim i As Integer
    i = 12345
    
  2. Long

    • 用于存儲較大的整數,范圍是 -2,147,483,648 到 2,147,483,647。
    Dim l As Long
    l = 123456789
    
  3. Single

    • 用于存儲單精度浮點數。
    Dim s As Single
    s = 123.45
    
  4. Double

    • 用于存儲雙精度浮點數。
    Dim d As Double
    d = 123456.789
    
  5. Currency

    • 用于存儲貨幣值,精度高達四位小數。
    Dim c As Currency
    c = 123456.78
    
  6. Decimal

    • 用于存儲精度更高的數值,適合需要高精度的小數計算。
    Dim dec As Decimal
    dec = 1234567890.123456789
    
  7. String

    • 用于存儲文本字符串。
    Dim str As String
    str = "Hello, World!"
    
  8. Boolean

    • 用于存儲布爾值(True 或 False)。
    Dim b As Boolean
    b = True
    
  9. Date

    • 用于存儲日期和時間。
    Dim dt As Date
    dt = #12/31/2024#
    
  10. Variant

    • 可以存儲任何類型的數據,是一種通用的數據類型,但性能較低,建議盡量避免使用。
    Dim v As Variant
    v = "This can be any type"
    
  11. Object

    • 用于存儲對象引用。
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
  12. Array

    • 用于存儲數組。
    Dim arr(1 To 5) As Integer
    arr(1) = 10
    arr(2) = 20
    '... 繼續初始化其他元素
    

使用示例

下面是一個示例宏,展示了如何聲明并使用不同的數據類型:

Sub DataTypeExamples()' 整數Dim i As Integeri = 12345MsgBox "Integer: " & i' 長整數Dim l As Longl = 123456789MsgBox "Long: " & l' 單精度浮點數Dim s As Singles = 123.45MsgBox "Single: " & s' 雙精度浮點數Dim d As Doubled = 123456.789MsgBox "Double: " & d' 貨幣Dim c As Currencyc = 123456.78MsgBox "Currency: " & c' 字符串Dim str As Stringstr = "Hello, World!"MsgBox "String: " & str' 布爾值Dim b As Booleanb = TrueMsgBox "Boolean: " & b' 日期Dim dt As Datedt = #12/31/2024#MsgBox "Date: " & dt' VariantDim v As Variantv = "This can be any type"MsgBox "Variant: " & v' 對象Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1")MsgBox "Worksheet name: " & ws.Name' 數組Dim arr(1 To 5) As Integerarr(1) = 10arr(2) = 20arr(3) = 30arr(4) = 40arr(5) = 50MsgBox "Array element 1: " & arr(1)MsgBox "Array element 2: " & arr(2)
End Sub

注意事項

  1. 精度和范圍:選擇合適的數據類型可以有效利用內存并提高性能。例如,使用Integer而不是Long來存儲較小的整數。
  2. 類型轉換:需要時可以使用類型轉換函數,例如CIntCLngCSngCDblCStr等。
  3. 對象引用:在處理對象(如工作表、工作簿等)時,記得使用Set關鍵字。

通過熟練掌握這些數據類型及其用法,您可以編寫更高效、易維護的VBA代碼。

ThisWorkbook

ThisWorkbook 是 Excel VBA 中的一個對象,代表當前運行的 VBA 代碼所在的工作簿。無論代碼在哪個工作表模塊或普通模塊中運行,ThisWorkbook 都始終指向包含該代碼的工作簿。使用 ThisWorkbook 可以簡化對工作簿的引用和操作,確保代碼始終作用于正確的工作簿。

ThisWorkbook 對象的常用操作

1. 訪問工作簿屬性

ThisWorkbook 可以用來訪問工作簿的各種屬性,如名稱、路徑、保存狀態等。

Sub WorkbookProperties()Dim wbName As StringDim wbPath As StringDim isSaved As BooleanwbName = ThisWorkbook.NamewbPath = ThisWorkbook.PathisSaved = ThisWorkbook.SavedMsgBox "Workbook Name: " & wbNameMsgBox "Workbook Path: " & wbPathMsgBox "Is Workbook Saved? " & isSaved
End Sub
2. 保存工作簿

可以使用 ThisWorkbook 對象的 SaveSaveAs 方法來保存工作簿。

Sub SaveWorkbook()' 保存當前工作簿ThisWorkbook.Save
End SubSub SaveWorkbookAs()' 保存當前工作簿為新的文件ThisWorkbook.SaveAs "C:\Path\To\NewWorkbook.xlsx"
End Sub
3. 關閉工作簿

使用 Close 方法可以關閉當前工作簿。

Sub CloseWorkbook()' 關閉當前工作簿且不保存更改ThisWorkbook.Close SaveChanges:=False
End Sub
4. 訪問工作表

可以通過 ThisWorkbook 訪問工作簿中的工作表。

Sub AccessWorksheets()' 激活名為 "Sheet1" 的工作表ThisWorkbook.Worksheets("Sheet1").Activate' 在名為 "Sheet1" 的工作表的 A1 單元格中輸入值ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = "Hello, World!"
End Sub
5. 事件處理

可以在 ThisWorkbook 模塊中編寫工作簿級別的事件處理代碼。例如,工作簿打開或關閉時執行特定操作。

' 在 ThisWorkbook 模塊中
Private Sub Workbook_Open()MsgBox "Welcome to " & ThisWorkbook.Name
End SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean)MsgBox "Goodbye from " & ThisWorkbook.Name
End Sub
6. 添加工作表

可以通過 ThisWorkbook 對象添加新的工作表。

Sub AddWorksheet()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets.Addws.Name = "NewSheet"
End Sub
7. 刪除工作表

可以通過 ThisWorkbook 對象刪除指定的工作表。

Sub DeleteWorksheet()Application.DisplayAlerts = FalseThisWorkbook.Worksheets("Sheet1").DeleteApplication.DisplayAlerts = True
End Sub
8. 使用自定義屬性

可以通過 ThisWorkbook 對象存取工作簿的自定義屬性。

Sub SetCustomProperty()ThisWorkbook.CustomDocumentProperties.Add _Name:="MyProperty", _LinkToContent:=False, _Type:=msoPropertyTypeString, _Value:="MyValue"
End SubSub GetCustomProperty()Dim propValue As StringOn Error Resume NextpropValue = ThisWorkbook.CustomDocumentProperties("MyProperty").ValueOn Error GoTo 0MsgBox "Custom Property Value: " & propValue
End Sub

綜合示例

下面是一個綜合示例,展示了如何在 ThisWorkbook 中執行多個操作:

Sub ComprehensiveExample()' 獲取工作簿屬性Dim wbName As StringwbName = ThisWorkbook.NameMsgBox "Workbook Name: " & wbName' 保存工作簿ThisWorkbook.Save' 添加新工作表Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets.Addws.Name = "NewSheet"' 在新工作表中輸入值ws.Range("A1").Value = "Hello, from NewSheet!"' 訪問特定工作表并輸入值ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = "Hello, from Sheet1!"' 關閉工作簿但不保存' ThisWorkbook.Close SaveChanges:=False
End Sub

通過上述操作,您可以充分利用 ThisWorkbook 對象來管理和操作當前工作簿,從而提高代碼的靈活性和穩定性。

WorkSheets

Worksheets 是 Excel VBA 中的一個集合對象,表示工作簿中的所有工作表。它允許您訪問、操作和管理工作簿中的工作表。以下是一些常見的 Worksheets 操作及其用法示例。

訪問工作表

按名稱訪問
Sub AccessWorksheetByName()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1")ws.Range("A1").Value = "Hello, World!"
End Sub
按索引訪問
Sub AccessWorksheetByIndex()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets(1) ' 訪問第一個工作表ws.Range("A1").Value = "Hello, World!"
End Sub

遍歷所有工作表

Sub LoopThroughWorksheets()Dim ws As WorksheetFor Each ws In ThisWorkbook.WorksheetsMsgBox "Sheet Name: " & ws.NameNext ws
End Sub

添加和刪除工作表

添加工作表
Sub AddNewWorksheet()Dim newSheet As WorksheetSet newSheet = ThisWorkbook.Worksheets.AddnewSheet.Name = "NewSheet"
End Sub
在特定位置添加工作表
Sub AddWorksheetAtSpecificPosition()Dim newSheet As WorksheetSet newSheet = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(1))newSheet.Name = "NewSheetAfterFirst"
End Sub
刪除工作表
Sub DeleteWorksheet()Application.DisplayAlerts = FalseThisWorkbook.Worksheets("Sheet1").DeleteApplication.DisplayAlerts = True
End Sub

激活和選擇工作表

激活工作表
Sub ActivateWorksheet()ThisWorkbook.Worksheets("Sheet1").Activate
End Sub
選擇工作表
Sub SelectWorksheet()ThisWorkbook.Worksheets("Sheet1").Select
End Sub

復制工作表

Sub CopyWorksheet()ThisWorkbook.Worksheets("Sheet1").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
End Sub

移動工作表

Sub MoveWorksheet()ThisWorkbook.Worksheets("Sheet1").Move After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
End Sub

示例:綜合使用 Worksheets

下面是一個綜合示例,展示如何訪問、添加、刪除和遍歷工作表:

Sub ComprehensiveWorksheetsExample()' 訪問第一個工作表并設置值Dim firstSheet As WorksheetSet firstSheet = ThisWorkbook.Worksheets(1)firstSheet.Range("A1").Value = "This is the first sheet"' 添加一個新工作表并設置值Dim newSheet As WorksheetSet newSheet = ThisWorkbook.Worksheets.AddnewSheet.Name = "NewSheet"newSheet.Range("A1").Value = "This is a new sheet"' 遍歷所有工作表并顯示名稱Dim ws As WorksheetFor Each ws In ThisWorkbook.WorksheetsMsgBox "Sheet Name: " & ws.NameNext ws' 刪除名為 "NewSheet" 的工作表Application.DisplayAlerts = FalseThisWorkbook.Worksheets("NewSheet").DeleteApplication.DisplayAlerts = True
End Sub

常見錯誤和注意事項

  1. 確保工作表存在:在訪問工作表之前,確保工作表存在,否則會引發錯誤。例如,使用錯誤處理程序來檢查工作表是否存在。
Function WorksheetExists(sheetName As String) As BooleanOn Error Resume NextWorksheetExists = Not ThisWorkbook.Worksheets(sheetName) Is NothingOn Error GoTo 0
End FunctionSub CheckAndAccessWorksheet()If WorksheetExists("Sheet1") ThenThisWorkbook.Worksheets("Sheet1").ActivateElseMsgBox "Sheet1 does not exist!"End If
End Sub
  1. 處理用戶警告:刪除工作表時,默認情況下 Excel 會顯示警告對話框。可以通過設置 Application.DisplayAlertsFalse 來禁用這些警告。

  2. 命名沖突:添加或重命名工作表時,確保新名稱不與現有名稱沖突。

通過掌握 Worksheets 對象的各種操作,您可以更有效地管理和操作 Excel 工作簿中的工作表。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38322.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【python全棧系列】day07-python數據類型-集合

Python中的集合&#xff08;Set&#xff09;是一個無序的、不包含重復元素的數據結構。它主要用于數學上的集合操作&#xff0c;如并集、交集、差集和對稱差集等。集合的基本用途包括去重和關系測試。 1、集合的特性 無序性&#xff1a;集合中的元素是無序的&#xff0c;這意…

gin-vue -admin 初始化安裝后 進入 后臺首頁報錯

報錯原因&#xff1a; 因為 我是使用的phpstudy 小皮的數據庫 默認的是MySam 的引擎 mysql 引擎需要是 innoDB 解決辦法 &#xff1a; 在linux 的環境下 配置一個數據庫 &#xff0c; 我是用的是vmware 虛擬機

深入理解分布式搜索引擎 ElasticSearch,并能基于 ELK+Kafka 搭建分布式?志收集系統

Elasticsearch是一個基于Lucene的分布式、多租戶能力的全文搜索引擎。它提供了RESTful web接口和分布式多用戶能力的全文搜索引擎&#xff0c;基于Apache許可證發行。以下是對Elasticsearch的深入理解以及如何基于ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;加…

npm緩存深度解析:理解、使用與清除指南

&#x1f31f; npm緩存深度解析&#xff1a;理解、使用與清除指南 npm&#xff08;Node Package Manager&#xff09;是JavaScript編程語言的包管理器&#xff0c;廣泛用于Node.js應用程序。它不僅幫助我們安裝和管理項目依賴&#xff0c;還擁有一個強大的緩存機制來加速這一過…

[論文筆記] BlendedDataset blend goes out of bounds for list 34 for valid split

報錯&#xff1a; Traceback (most recent call last):File "/mnt/cpfs/kexin/dlc_code/qwen2/Pai-Megatron-Patch/examples/qwen2/pretrain_qwen.py", line 211, in <module> (<megatron.core.datasets.gpt_dataset.GPTDataset object at 0x7f491886bf10&…

《昇思25天學習打卡營第8天|CarpeDiem》

《昇思25天學習打卡營第8天|CarpeDiem》 模型訓練構建數據集定義神經網絡模型定義超參、損失函數和優化器超參損失函數優化器 訓練與評估 打卡 今天是昇思25天學習打卡營的第8天&#xff0c;終于迎來 模型訓練 的部分了&#xff01;&#xff01;&#xff01; 興奮 發癲 模型訓…

SSH遠程命令執行漏洞(CVE-2024-6387)驗證

0x01、漏洞名稱 OpenSSH遠程代碼執行漏洞 &#xff08;CVE-2024-6387&#xff09; 0x02、漏洞簡介 ? OpenSSH是SSH&#xff08;Secure SHell&#xff09;協議的開源實現&#xff0c;它通過不安全的網絡在兩個不受信任的主機之間提供安全的加密通信。OpenSSH 廣泛用于基于Un…

數據庫。

數據庫安全性 論述題5’ 編程題10’ sql語言實現權限控制 一、概述 1、不安全因素 &#xff08;1&#xff09;?授權對數據庫的惡意存取和破壞 &#xff08;2&#xff09;數據庫中重要的數據泄露 &#xff08;3&#xff09;安全環境的脆弱性 2、?主存取控制?法 gr…

【ajax實戰06】進行文章發布

本文章目標&#xff1a;收集文章內容&#xff0c;并提交服務器保存 一&#xff1a;基于form-serialize插件收集表單數據 form-serialize插件僅能收集到表單數據&#xff0c;除此之外的數據無法收集到 二&#xff1a;基于axios提交到服務器保存 三&#xff1a;調用alert警告…

基于KMeans的航空公司客戶數據聚類分析

&#x1f490;大家好&#xff01;我是碼銀~&#xff0c;歡迎關注&#x1f490;&#xff1a; CSDN&#xff1a;碼銀 公眾號&#xff1a;碼銀學編程 實驗目的和要求 會用Python創建Kmeans聚類分析模型使用KMeans模型對航空公司客戶價值進行聚類分析會對聚類結果進行分析評價 實…

Linux修煉之路之進程概念,fork函數,進程狀態

目錄 一&#xff1a;進程概念 二&#xff1a;Linux中的進程概念 三&#xff1a;用getpid(),getppid()獲取該進程的PID,PPID 四&#xff1a;用fork()來創建子進程 五&#xff1a;操作系統學科的進程狀態 六&#xff1a;Linux中的進程狀態 接下來的日子會順順利利&#xf…

【區塊鏈+基礎設施】深證金融區塊鏈平臺 | FISCO BCOS應用案例

作為數據交換密集型行業&#xff0c;資本市場是區塊鏈創新應用的重要領域&#xff0c;區塊鏈技術可以有效解決諸多痛點問題。比 如&#xff0c;針對信息不對稱的問題&#xff0c;區塊鏈技術通過將整個企業的經營活動信息上鏈&#xff0c;有效降低盡調成本&#xff0c;為投融資決…

配置windows環境下獨立瀏覽器爬蟲方案【不依賴系統環境與chrome】

引言 由于部署瀏覽器爬蟲的機器瀏覽器版本不同&#xff0c;同時也不想因為部署了爬蟲導致影響系統瀏覽器數據&#xff0c;以及避免爬蟲過程中遇到的chrome與webdriver版本沖突。我決定將特定版本的chrome瀏覽器與webdriver下載到項目目錄內&#xff0c;同時chrome_driver在初始…

我使用 GPT-4o 幫我挑西瓜

在 5 月 15 日&#xff0c;OpenAI 旗下的大模型 GPT-4o 已經發布&#xff0c;那時網絡上已經傳開&#xff0c; 但很多小伙伴始終沒有看到 GPT-4o 的體驗選項。 在周五的時候&#xff0c;我組建的 ChatGPT 交流群的伙伴已經發現了 GPT-4o 這個選項了&#xff0c;是在沒有充值升…

NSSCTF-Web題目21(文件上傳-phar協議、RCE-空格繞過)

目錄 [NISACTF 2022]bingdundun~ 1、題目 2、知識點 3、思路 [FSCTF 2023]細狗2.0 4、題目 5、知識點 6、思路 [NISACTF 2022]bingdundun~ 1、題目 2、知識點 文件上傳&#xff0c;phar偽協議 3、思路 點擊upload&#xff0c;看看 這里提示我們可以上傳圖片或壓縮包&…

應對.Kastaneya勒索病毒:保護您的數據安全

導言&#xff1a; 隨著科技的發展&#xff0c;網絡安全問題也日益嚴峻。最近&#xff0c;一種名為.Kastaneya的勒索病毒開始在網絡上出現&#xff0c;對用戶的計算機和數據造成嚴重威脅。本文91數據恢復將介紹.Kastaneya勒索病毒的特點及其傳播方式&#xff0c;并提供一些有效…

Unity 解包工具(AssetStudio/UtinyRipper)

文章目錄 1.UtinyRipper2.AssetStudio 1.UtinyRipper 官方地址&#xff1a; https://github.com/mafaca/UtinyRipper/ 下載步驟&#xff1a; 2.AssetStudio 官方地址&#xff1a; https://github.com/Perfare/AssetStudio 下載步驟&#xff1a;

【HarmonyOS NEXT】鴻蒙多線程Sendable開發

非共享模塊在同一線程內只加載一次&#xff0c;在不同線程間會加載多次&#xff0c;單例類也會創建多次&#xff0c;導致數據不共享&#xff0c;在不同的線程內都會產生新的模塊對象。 基礎概念 Sendable協議 Sendable協議定義了ArkTS的可共享對象體系及其規格約束。符合Sen…

STM32mp157aaa按鍵中斷實驗

效果圖&#xff1a; 源碼&#xff1a; #include "key.h" void hal_key1_rcc_gpio_init() {// 使能GPIOF組RCC->MP_AHB4ENSETR | (0x1 << 5);// 設置引腳位輸入模式GPIOF->MODER & (~(0X3 << 18));GPIOF->MODER & (~(0X3 << 16))…

[C++11] 退出清理函數(quick_exit at_quick_exit)

說明&#xff1a;在C11中&#xff0c;quick_exit和at_quick_exit是新增的快速退出功能&#xff0c;用于在程序終止時提供一種快速清理資源的方式。 quick_exit std::quick_exit函數允許程序快速退出&#xff0c;并且可以傳遞一個退出狀態碼給操作系統。與std::exit相比&#…