使用VBA If then语句复制和粘贴带有TextBox.Values的数据

使用VBA If then语句复制和粘贴带有TextBox.Values的数据,vba,excel,Vba,Excel,我目前面临以下问题: 当前的源数据如下所示: Value#1 Value#2 10 AA 11 AA 12 AB 13 AD 1231 AA 125 AB 4312 AA 12314 AA 现在,用户有多个userform文本框,可以在其中定义各个值的位置​​它们是: Textbox1=定义值的起始行 T

我目前面临以下问题:

当前的源数据如下所示:

Value#1        Value#2
10             AA
11             AA
12             AB
13             AD
1231           AA
125            AB
4312           AA
12314          AA
现在,用户有多个userform文本框,可以在其中定义各个值的位置​​它们是:

  • Textbox1=定义值的起始行
  • Textbox2=值#1的列
  • Textbox3=值#2的列
  • Textbox4=值中的标准#2
现在我想实现以下目标:;用户应指定其值#1的位置(在文本框2中),然后定义可在其中找到标准的列(文本框3中的值#2),然后定义应过滤的标准

因此,如果他选择在文本框4中键入“AB”,则工作表中第一个可用列中必须出现以下内容:

Value#1        Value#2
12             AB
125            AB
我当前的代码看起来像这样,但我不断地修改它,没有任何东西真正起作用(语法错误)。实际上,我确信语法的开头是正确的(?),但我不知道如何用vba表示,如果条件匹配,我希望他们将值从列复制到另一列。这里和其他地方有很多例子,但我找不到任何范围或值未预定义的地方

Dim c as Range

    If OptionButton1.Value = True Then 'also this only happens if the user decides that an Optionbutton is true         
       For Each c In Sheets ("Table") Range (TextBox3.Value & TextBox1.Value + 1 & ":" & TextBox3.Value & lastrow)
             If cell.Value = TextBox4.Value Then
                    Range (TextBox2.Value & TextBox1.Value + 1 & ":" & TextBox2.Value & lastrow) c.copy c.Offset (, 1) 'syntax-error
             End If
        Next

    End If
我对VBA和整个编程相当陌生,无法找到解决方案


通过一些研究,我很确定解决这个问题的语法有点像“For each”x“等,但我从来没有发现使用文本框定义范围和值的东西。

关于代码的一些注意事项:

首先,您在表格中的每个C的
行(“表格”)…
中循环使用
C
,但在下一行,您检查的是
如果cell.Value=TextBox4.Value
,而不是
如果C.Value=TextBox4.Value

其次,如果要将该单元格复制到下一列,以防它等于
TextBox4.Value
,请使用
C.copy C.Offset(,1)

请尝试以下代码:

Dim Rng As Range
Dim C As Range

If OptionButton1.Value = True Then 'also this only happens if the user decides that an Optionbutton is true

    ' set the range fisrt , See if you are getting the Error on this line -->
    Set Rng = Sheets("Table").Range(TextBox3.Value & TextBox1.Value + 1 & ":" & TextBox3.Value & lastrow)
    For Each C In Rng
        ' for DEBUG ONLY
        Debug.Print C.Value & " | TextBox4 value: " & TextBox4.Value
        If C.Value = TextBox4.Value Then
            MsgBox "There is a match" ' <-- for DEBUG ONLY
            C.Copy C.Offset(, 1)  ' copy the value from the cell into the next column to the right
        End If
    Next C
End If
Dim Rng As范围
调光范围
如果OptionButton1.Value=True,则“只有当用户确定Optionbutton为True时,才会发生这种情况。”
'首先设置范围,查看这一行是否有错误-->
设置Rng=Sheets(“Table”).范围(TextBox3.Value&TextBox1.Value+1&“:”&TextBox3.Value&lastrow)
对于Rng中的每个C
'仅用于调试
调试。打印C.值和“| TextBox4”值:“&TextBox4.值
如果C.值=TextBox4.值,则

MsgBox“有一个匹配”“…但没有什么真正起作用。”——发生了什么,为什么它与您的期望不同?在您的帖子中添加此信息。非常感谢您的建议。我希望我的编辑信息有帮助。谢谢你的提示。非常感谢。也谢谢你的代码。我试过了,但什么也没用。没有错误消息,工作表上也没有发生任何事情。我在代码中添加了两行代码,以帮助您进行调试,查看即时窗口中的结果。谢谢。我在代码中添加了这两行代码,但仍然没有发生任何事情。它成功了!我犯了一个愚蠢的错误并对其进行了调整(我的OptionButton实际上是optionbutton11而不是1。很抱歉,我之前没有注意到它。非常感谢!是否有一种方法可以将一个值写在另一个值的下面而不留空格?而且我想将值#1复制到列中,而不是值#2,是否有可能?