是否使用do直到抵消一个值?

时间:2018-05-19 23:12:42

标签: excel excel-vba vba

这应该做什么:当用户在用户窗体上输入ttxt的值并点击“添加”按钮时,它将首先检查该值是否为空,如果是,它将输入输入值用户 - 如果它不为空,它将向右移动2列并在那里输入值。每按一次按钮,这将继续向右添加值。我不知道该如何解决这个问题。

'Starts on column G1
Range("G1").End(xlUp).Offset(2, 0).Select 

Do Until ActiveCell.Value = ttxt.Value
If ActiveCell.Value = "" Then
ActiveCell.Value = Me.ttxt
Else
'Offsets to the right 2 columns to enter another value if previous value is 
'not empty.
ActiveCell.Offset(0, 2).Value = Me.ttxt
End If
Loop
Me.ttxt = ""

见下文

Private Sub addbtn_Click()

Worksheets("Sheet1").Activate

Dim r As Range
Set t = Range("F1").End(xlUp).Offset(2, 0)
Set r = Range("G1").End(xlUp).Offset(2, 0)
Do Until r.Value = "" And t.Value = ""
Set r = r.Offset(, 2) 'Moves over 2 columns
Set t = t.Offset(, 2) 'Moves over 2 columns
Loop
'Inputs values
r.Value = Me.ttxt
t.Value = Me.atxt & ", " & Me.xtxt
With Me.ListBox1
.AddItem
.List(i, 0) = Me.ttxt
.List(0, i) = Me.atxt & ", " & Me.xtxt
i = i + 1
End With
'Clears out userform
Me.ttxt = ""
Me.atxt = ""
Me.xtxt = ""
End Sub

所以这是添加点击按钮的完整代码。因此,您知道这些代码会将用户输入值添加到列中,就像它应该的那样。我也在userform上有一个列表框。每当一个人将值添加到工作表时,我希望将值放入列表框中。当前代码添加第一个值,之后的任何值只是替换列表框中的第一个值。希望你能理解我想说的话。

我希望每次添加值时都会将值添加到列表中,就像在工作表上一样。

1 个答案:

答案 0 :(得分:0)

Sub AlternateColumnsEmpty()
'Starts on column G1
  Dim r As Range
  Set r = Range("G3")
  If r.Value = "" Then
    r.Value = Me.ttxt
  Else
    Cells(r.Row, Columns.Count).End(xlToLeft).Offset(, 2).Value = Me.ttxt
  End If
  Me.ttxt = ""
End Sub

Sub AlternateColumnsHaveData()
'Starts on column G1
  Dim r As Range
  Set r = Range("G3")
  Do Until r.Value = ""
    Set r = r.Offset(, 2)
  Loop
  r.Value = Me.ttxt
  Me.ttxt = ""
End Sub