如何使用VBA遍歷Excel工作表

立即分享:

有時逐行讀取工作表並有選擇地從中獲取數據很有用。 下面的示例顯示瞭如何執行此操作。

本文假定讀者已顯示“開發人員”功能區,並且熟悉VBA編輯器。 如果沒有,請使用Google“ Excel開發人員標籤”或“ Excel代碼窗口”。

以下示例通過檢查電子郵件地址的每一行並將它們串聯到單個地址行中來操縱數據。 儘管Excel具有內置的Transpose函數,但我們希望通過代碼排除某些特定的收件人並添加定界符。

我們的應用程序只需要一張紙。 將以下信息複製到單元格A1中:

電子郵件
tcruise@paramount.com
朱莉婭.R@disney.com
Jules.dassin@gaumont.co.fr
EnricoFellini@cinecitta.co.it
marymontrary@bedlam.org.uk

在窗體上放置一個按鈕以啟動代碼。在窗體上放置一個按鈕以啟動代碼

假設我們需要發送數百封這樣的電子郵件,而不是只有五封;我們希望向每封郵件發送相同的內容和相同的劇本副本。有幾種方法可以實現這一點,最常見的是透過 VBA 程式碼呼叫電子郵件用戶端,例如 Outlook。然而,本練習有兩個目的:

  • 展示如何輕鬆地在工作表中循環;
  • 突出顯示Excel檢查每行並對其執行操作的能力。

VBA代碼

VBA代碼將連接所有地址,並在每個地址後插入一個分號,以便可以將其一次粘貼到電子郵件的收件人字段中。 您會從代碼中註意到,在檢查了行之後,它將排除法文的行。

插入一個模塊,然後輸入以下內容:

Option Explicit
Dim strEmail As String
Dim strAll As String

Sub Main()
    strAll = ""
    Range("C2") = strAll     'clear previous program results
    Sheets("Sheet1").Select
    Range("A2").Select
    Do While ActiveCell > ""      'loop until row 7
        strEmail = ActiveCell
        If Right(strEmail, 2) <> "fr" Then      'exclude France
            strAll = strAll & strEmail & ";"
        End If
        Range("A" & ActiveCell.Row + 1).Select     'move on a row in the SAME column
    Loop
    Range("C2") = strAll
End Sub

該代碼將活動單元格保留在A列中,只有行繼續前進。 要連續引用其他地方的信息,我們將使用:

Variable = Activecell.offset(offset rows, offset columns)

例如,要從活動行的B列獲取值,代碼將讀取為 Activecell.offset(0,1)。 在A2中獲取A3的值將顯示為 Activecell.offset(-1,0)。

要測試您的代碼,請將按鈕分配給宏“ Main”。

為了防止垃圾郵件,某些Internet服務提供商可能會限制您一次發送的電子郵件數量。 如果使用此方法,則最好一次檢查一下它們,然後再一次性發送數百封電子郵件。

處理Excel文件損壞

Excel文件損壞我們有時會遇到工作簿損壞到Excel本身都無法恢復的情況。這對大多數Excel用戶來說都是一場災難,包括專家用戶。但是,如果您手邊有有效的恢復工具,就可以進行恢復。 損壞的xlsx文件 方便快捷。

作者簡介:

Felix Hooker是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復 rar 腐敗 和sql恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。