【发布时间】:2019-05-21 20:38:45
【问题描述】:
我在一个用户窗体上有 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
【问题讨论】:
-
花点时间逐行浏览您的代码正在执行的操作。目前,它正在尝试用数组而不是实际值覆盖同一个单元格 24 次。
-
我注意到了这一点,但我对如何滚动 TextBoxes 然后滚动循环中的 Cells 感到困惑。任何帮助将不胜感激
-
作为一个粗略的、未经测试的循环,您可以尝试类似
For i = 1 to 24: Worksheets("AssessCrit - PU").Range("G5").Offset(0,i).Value = Me.Controls("TextBox" & i).Text: Next i