我在用户表单上有24个文本框。我正在寻找一个循环,以获取文本框1并将其值复制到“ G7”,然后向下滚动到G列中的下一个单元格并复制文本框2,依此类推
我目前正在复制每个文本框。我想在某些单元格合并时使用向下滚动
Range("G7").Value = TextBox1.Value
Range("G8").Value = TextBox2.Value
Range("G13").Value = TextBox3.Value
Range("G19").Value = TextBox4.Value
我只想简化这一行,因为我有3种不同的用户表单来进行此操作
我尝试了以下操作,但是代码没有填充单元格:
Sheets("AssessCrit - PU").Select
Dim i As Long
For i = 1 To 24
With Me.Controls("TextBox" & i)
Range("G6").End(xlDown).Value = _
Array(TextBox1, TextBox2, TextBox3, .Value)
End With
Next i
我有一个可行的解决方案,谢谢大家的帮助:
Sub SelectNextVisibleCell(Rng As Range)
Dim Cel As Range
For Each Cel In Range(Rng.Offset(1, 0), Rng.Offset(1000, 0))
If Cel.EntireRow.Hidden = False Then
Set Rng = Cel
Exit Sub
End If
Next Cel
End Sub
Private Sub CommandButton1_Click()
Sheets("AssessCrit - PU").Range("G7").Select
Dim Rng As Range
Dim i As Integer
For i = 1 To 24
Set Rng = ActiveCell
Call SelectNextVisibleCell(Rng)
Rng.Select
Rng.Value = Me.Controls("TextBox" & i).Value
Next i
End Sub
答案 0 :(得分:0)
您当前的问题似乎是单元未正确循环,从而使一个单元被分配了一组文本框。
这应该解决您的问题,因为它会增加每个循环以及文本框使用的单元格:
Sheets("AssessCrit - PU").Select
Dim i As Long
For i = 1 To 24
Range("G" & (6 + i)).Value = Me.Controls("TextBox" & i).Value
Next i
Me.Controls = Nothing
(我不常使用excel,主要关注Access,因此,如果此代码有误,请告诉我要更改的内容。)
答案 1 :(得分:0)
我认为这就是您要实现的目标。从G7
开始,它将测试每个单元格的合并条件,如果True
,它将进入下一个单元格G8
对其进行测试。如果未合并该单元格,它将复制文本框值,直到复制文本框24。
Sub SkipMergedCells()
i = 7
For x = 1 To 24
If Range("G" & i).MergeCells = True Then
i = i + 1
x = x - 1
ElseIf Range("G" & i).MergeCells = False Then
Range("G" & i).Value = Me.Controls("TextBox" & x).Value
i = i + 1
End If
Next x
End Sub
已更新以反映ColG中合并的单元格。
Sub SkipMergedCells()
i = 7
For x = 1 To 24
If Range("G" & i).MergeCells = True Then
Range("G" & i).Value = Me.Controls("TextBox" & x).Value
Dim mRowCnt As Long
mRowCnt = Range("G" & i).MergeArea.Cells.Count
i = i + mRowCnt
x = x
ElseIf Range("G" & i).MergeCells = False Then
Range("G" & i).Value = Me.Controls("TextBox" & x).Value
i = i + 1
End If
Next x
End Sub