簡體   English   中英

VBA-檢查單元格的內容是否為粗體

[英]VBA - Check if a cell's content is bold

我目前正在嘗試使用VBA在Excel中創建日歷。
現在,我需要檢查B列中的單元格是否設置為粗體。 由於格式化為粗體的行可以更改其位置,因此我需要檢查B列中的每個單元格(如果其內容為粗體)。

我當前的代碼:

Sub ScanBlock1()

Dim Zelle As Integer
Dim Cell As String
Dim found As Integer

Zelle = 7
Zell = "B" & Zelle
found = 0

'CopyCat.OpenCopyCat
Windows("Preset.xlsm").Activate

Do While found = 0
    Windows("Preset.xlsm").Activate
    Range(Zell).Select
    If Range(Zell).Font.Bold Then
        'Save start and end for copycat
        found = 1
    Else
        Zelle = Zelle + 2
    End If
Loop

End Sub

嘗試此操作時,我遇到了多個問題。

我遇到的第一個問題是,Excel不會自動激活請求的窗口。 我不知道為什么 它一直在其他項目中工作。

第二個問題:我的IF語句中總是出現溢出錯誤。 我認為這是由於Excel未激活我請求的窗口引起的。
編輯:因為許多人已經寫過這是一個溢出錯誤,因為沒有找到任何粗體,我想打開/選擇的窗口是“已滿”的粗體單元。

您已將Zelle定義為整數,最大可能為32767,而Excel具有大約一百萬行。 快速解決方案是更改聲明:

Dim Zelle As Integer

但是可能需要很長時間才能運行此宏。 您應該將其限制為UsedRange並使用對象循環。 喜歡:

Dim cl as Range

For each cl in Workbooks("Preset.xlsm").Worksheets(1).UsedRange
  If Range(Zell).Font.Bold Then
     'Do something
  End If
Next cl

這將適用於Preset.xlsm的第一張紙,但是您當然可以指定其他紙。

@comment下面:為什么要遍歷UsedRange中的所有單元格? OP僅需要B列。

好吧,這樣會更快:

For each cl in Workbooks("Preset.xlsm").Worksheets(1).UsedRange.Columns(2)
  1. 如果要激活Preset.xlsm,則必須將其打開。
  2. 在您的應用程序中捕獲錯誤。
  3. 不需要第二次激活(在循環內)
  4. 您不斷增加zell E的值,但不更新Zell

嘗試這個:

Zelle = 7
zMAX=1000

found = 0
Windows("Preset.xlsm").Activate
if Err.Number <> 0 then goto errorlabel   ' process error

Do While found = 0 or Zelle < zMAX
    Zell = "B" & Zelle
    If Range(Zell).Font.Bold Then
        'Save start and end for copycat
        found = 1
    Else
        Zelle = Zelle + 2
    End If
Loop

If Zelle >= zMAX then
   Msgbox "Problem!"
Endif

我個人比較喜歡直接使用單元格引用而不是打擾字符串,因此這里是一個替代解決方案:

zMAX=1000
Windows("Preset.xlsm").Activate
if Err.Number <> 0 then goto errorlabel   ' process error

for Zelle = 7 to zMAX Step 2
    If Cells(Zelle, 2).Font.Bold Then Exit For ' "2" for column "B"
Next
If Zelle >= zMAX then
   Msgbox "Problem!"
Else
   ' Bold found, Save start and end for copycat
Endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM