gpt4 book ai didi

vba - Excel VBA For-Loop 仅在 Debug模式下运行

转载 作者:行者123 更新时间:2023-12-04 20:35:23 28 4
gpt4 key购买 nike

我试图弄清楚为什么以下代码只能在 Debug模式下工作......

当我点击“保存”按钮时,宏会保存每个数据条目,即使它是相同的公司名称。当我调试宏进入for循环并给我消息“公司已经存在”。

我的错误在哪里?

Sub Copy_Values()

Dim sapcolleague As String, str1 As String, str2 As String, str3 As String

Dim i As Integer, ValueToFind As String, ValueToCheck As String
Dim totalAccRows As Integer
Dim accColumn As Integer
Dim currentAccRow As Integer

accColumn = 2
totalAccRows = Worksheets("DB").Cells(Rows.Count, accColumn).End(xlUp).Row
ValueToFind = Worksheets("Maintain").Range("F13").Value

For currentAccRow = 2 To totalAccRows
If Cells(currentAccRow, accColumn).Value = ValueToFind Then
MsgBox ("Company already exists!")
Exit Sub
End If

Next


Worksheets("DB").Range("A8").EntireRow.Insert

Worksheets("DB").Range("A8").Value =
Worksheets("Maintain").Range("F11").Value
Worksheets("DB").Range("B8").Value =
Worksheets("Maintain").Range("F13").Value
Worksheets("DB").Range("C8").Value =
Worksheets("Maintain").Range("F15").Value

str1 = Worksheets("Maintain").Range("F18").Value
str2 = Worksheets("Maintain").Range("F19").Value
str3 = Worksheets("Maintain").Range("F20").Value

sapcolleague = str1 & " " & str2 & " " & str3

Worksheets("DB").Range("D8").Value = sapcolleague

' This MsgBox will only show if the loop completes with no success
MsgBox "Successfully saved!"


End Sub

最佳答案

If Cells(currentAccRow, accColumn).Value = ValueToFind Then Cells没有父工作表,因此它将在运行时成为 ActiveSheet。

快速重写:

Option Explicit

Sub Copy_Values()

Dim sapcolleague As String, valueToFind As String, accColumn As Long

With Worksheets("DB")

accColumn = 2
valueToFind = Worksheets("Maintain").Range("F13").Value

If Not IsError(Application.Match(valueToFind, .Columns(accColumn), 0)) Then
MsgBox ("Company already exists!")
Exit Sub
End If


.Range("A8").EntireRow.Insert

.Range("A8:C8").Value = Array(Worksheets("Maintain").Range("F11").Value, _
valueToFind, _
Worksheets("Maintain").Range("F15").Value)

sapcolleague = Join(Array(Worksheets("Maintain").Range("F18").Value, _
Worksheets("Maintain").Range("F19").Value, _
Worksheets("Maintain").Range("F20").Value), Chr(32))

.Range("D8").Value = sapcolleague
End With

'Shouldn't it be saved somewhere around here?

' This MsgBox will only show if the loop completes with no success
MsgBox "Successfully saved!"

End Sub

关于vba - Excel VBA For-Loop 仅在 Debug模式下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354892/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com