簡體   English   中英

如何在Excel-VBA中退出循環

[英]How to exit for loop in excel-vba

我的數據集是這樣的

在此處輸入圖片說明

我想做他們

在此處輸入圖片說明

請看第一行。

我的代碼是

Private Sub CommandButton1_Click()
  Dim MyColInstance, i As Long
  Dim MyWorksheetLastColumn As Byte
  MyWorksheetLastColumn = Worksheets(1).Cells(1, columns.Count).End(xlToLeft).Column

  For i = 1 To MyWorksheetLastColumn
    MyColInstance = ColInstance("Preference", i)
    Cells(1, MyColInstance).Value = "Preference" & i

  Next i

End Sub

Function ColInstance(HeadingString As String, InstanceNum As Long)
  Dim ColNum As Long
  On Error Resume Next
  ColNum = 0

  For X = 1 To InstanceNum
     ColNum = (Range("A1").Offset(0, ColNum).Column) + Application.WorksheetFunction.Match(HeadingString, Range("A1").Offset(0, ColNum + 1).Resize(1, Columns.Count - (ColNum + 1)), 0)
  Next

  ColInstance = ColNum

End Function

問題是在運行此代碼時,它顯示錯誤,因為for循環未完成。 我們能做些什么?

你能這樣嗎? 在我看來,您只是在第一行的標題中添加了后綴...

Sub UpdateColumnHeaders()
    Dim headers As Range, header As Range, suffixes As Range, suffix As Range, i As Integer

    Set headers = Range(Cells(1, 1), Cells(1, Range("A1").End(xlToRight).Column))
    Set suffixes = Range("A1:A" & Range("A1").End(xlDown).Row)

    i = 1

    For Each header In headers
        If header = "Preferences" Then
            header = header & suffixes(i)
            i = i + 1
        End If
    Next
End Sub
Private Sub CommandButton1_Click()

Dim Count1, Count2 As Integer
Dim MyWorksheetLastRow As Byte
Dim MyColInstance, emp_i As Long

For Each Row_Cel In Range("1:1")
If Row_Cel.Value = "Employment" Then
Count1 = Count1 + 1
End If
If Row_Cel.Value = "Job" Then
Count2 = Count2 + 1
End If
Next Row_Cel

For emp_i = 1 To Count1
MyColInstance = ColInstance("Employment", emp_i)
Cells(1, MyColInstance).Value = "Employment" & emp_i
Next emp_i
For emp_i = 1 To Count2
MyColInstance = ColInstance("Job", emp_i)
Cells(1, MyColInstance).Value = "Job" & emp_i
Next emp_i


End Sub

Function ColInstance(HeadingString As String, InstanceNum As Long)
Dim ColNum As Long
On Error Resume Next
ColNum = 0
For X = 1 To InstanceNum
ColNum = (Range("A1").Offset(0, ColNum).Column) + Application.WorksheetFunction.Match(HeadingString, Range("A1").Offset(0, ColNum + 1).Resize(1, Columns.Count - (ColNum + 1)), 0)
Next
ColInstance = ColNum
End Function

暫無
暫無

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

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