簡體   English   中英

是否有VBA /宏代碼用於在工作表中使用粗體文本查找和選擇第一個單元格?

[英]Is there a VBA/macro code for locating and selecting the first cell in a worksheet with bold text?

我收到了一位供應商的工作報告。 該報告實際上是一系列報告,它們都是垂直放入Excel的不同格式。 我要做的是將每個報告解析成一個單獨的選項卡並清理多余的行/列,因為在當前格式中它真的很難看。

我已經發現了一些碎片,我拼湊起來刪除多余的行和列,一旦我將數據放在單獨的選項卡上,但我正在努力解決的部分是將每個報告解析為它自己的選項卡。 下面是我嘗試過的,它適用於具有相同標題的報表,但是當您在整個報表中獲得部分時,標題會發生變化。 這個工作表上每個報告的唯一共同點就是報告的標題是粗體文字,然后下面的所有內容,直到下一個報告開始,都不是粗體。 有沒有辦法編輯下面的內容,以便它找到的范圍從帶有粗體文本的第一行到帶有粗體文本的下一行,少一個?

Dim findrow As Long, findrow2 As Long
findrow = Range("A:A").Find("Employee Updates", Range("A1")).Row
findrow2 = Range("A:A").Find("Employee Updates", Range("A" & 
findrow)).Row
Range("A" & findrow & ":BG" & findrow2 - 1).Select
'selects rows between employee updates header'

Selection.Cut 'cuts and pastes to a new tab'
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste[enter image description here][1]

首先,不要在代碼上使用“選擇”。 這是一種不好的做法,可以給你很多不同的問題。

我會建議你:

   Dim initialRow As Long, endRow As Long
   'starts on line 1 and goes on
   initialRow = 1
   'checks for bold in column 1
   Do While Cells(initialRow,1).Font.Bold = False
     initialRow = initialRow + 1
   Loop
   endRow = initialRow+1
   Do While Cells(endRow+1,1).Font.Bold = False
     endRow = endRowRow + 1
   Loop
   Range("A" & initialRow & ":BG" & endRow).Cut
   Sheets.Add After:=ActiveSheet
   ActiveSheet.Paste

這將為您提供一個粗體和下一個之間的區域,假設它們位於第一列,否則您可能需要更改它。 請注意,這將需要進行調整,以防您循環遍歷所有單元格,特別是為了避免上一個報告中的錯誤,其中沒有任何粗體單元格告訴程序停止查找它們

暫無
暫無

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

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