我有一张工作表,我想在该表中更改与我选择的列不同的单元格区域中的值。我使用VBA,因为它是将信息发送到特定打印机的代码的一部分。我想让宏也显示所选内容已被打印。
要澄清:
-当我选择F4:F10时,我希望单元格G4:G10更改为文本值“是”。
-当我选择F4:F15时,我希望单元格G4:G15更改为文本值“是”。
我搜索了论坛,发现/做了以下事情:
Sheets("INPUT").Select
ActiveCell.Offset(0, 1).FormulaR1C1 = "Yes"
这很好,但是它只会更改一个单元格的值,而不会更改一系列单元格的值。
是否有一种方法可以将单元格范围更改为“是”,而不是一个单元格?
答案 0 :(得分:1)
尝试
Selection.Offset(0,1).Value = "Yes"
这是Selection
是您选择的范围的地方。偏移量为1列,并一次性分配了值"Yes"
。
答案 1 :(得分:0)
好的,这是我解决这个问题的方法。我不太确定是什么触发了您的当前代码,因此我认为通过Worksheet.SelectionChange Event捕获它是有意义的。
如果您选择了所有G4:G10
,这只会更新所有F4:F10
的值 ,同样,如果您选择了所有G4:G15
,只会更新F4:F15
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim intersectedAll As Boolean
Dim cell As Range
Dim rng1 As Range
Set rng1 = Range("F4:F10")
If Target.count = rng1.count Then
intersectedAll = True
For Each cell In rng1
If Intersect(Target, rng1) Is Nothing Then
intersectedAll = False
End If
Next cell
If intersectedAll = True Then
Target.offset(0, 1).value = "Yes"
intersectedAll = False
End If
End If
Dim rng2 As Range
Set rng2 = Range("F4:F15")
If Target.count = rng2.count Then
intersectedAll = True
For Each cell In rng2
If Intersect(Target, rng2) Is Nothing Then
intersectedAll = False
End If
Next cell
If intersectedAll = True Then
Target.offset(0, 1).value = "Yes"
intersectedAll = False
End If
End If
End Sub
。
<table style="border: 1px solid red">
<thead>
<tr>
<td>Header stays put, no scrolling</td>
</tr>
</thead>
<tbody style="display: block; border: 1px solid green; height: 30px; overflow-y: scroll">
<tr>
<td>cell 1/1</td>
<td>cell 1/2</td>
</tr>
<tr>
<td>cell 2/1</td>
<td>cell 2/2</td>
</tr>
<tr>
<td>cell 3/1</td>
<td>cell 3/2</td>
</tr>
</tbody>
</table>
答案 2 :(得分:0)
通常,请尽量避免使用Selection。这是替代方法,提示用户选择范围,然后更新右侧列中的相应单元格:
Sub tgr()
Const sUpdatedValue As String = "Yes"
Dim rSelected As Range
Dim rArea As Range
On Error Resume Next
Set rSelected = Application.InputBox(Prompt:="Select Range of Cells." & Chr(10) & _
"Note that the cells in the column to the RIGHT of the selection will be updated.", _
Title:="Range Selection", _
Default:=Selection.Address, _
Type:=8)
On Error GoTo 0
If rSelected Is Nothing Then Exit Sub 'Pressed cancel
For Each rArea In rSelected.Areas
rArea.Offset(, 1).Value = sUpdatedValue
Next rArea
End Sub
答案 3 :(得分:0)
由于上述回复,我使它运行正常。非常感谢!
我不确定如何关闭该线程或是否有此必要,但是“关闭案例”