Vba 使用行和列值定位单元格,并增加单元格';单击按钮时,s值乘以1
我刚刚学习了Vba 使用行和列值定位单元格,并增加单元格';单击按钮时,s值乘以1,vba,excel,Vba,Excel,我刚刚学习了VB中的基础知识,我想知道是否有人可以帮助我编写Excel工作表,使用行和列值定位单元格,并在单击按钮时将定位单元格的“值”(包含在定位单元格中的数字)增加一个特定的整数(例如+1)。我已经在常见问题中查找了,但没有结果。如果你觉得我错过了它,请提供我的链接,这样我就可以得到它。我已经在VBA中学习了编码的基础知识,但如果您能详细介绍一下高级代码,我将不胜感激 为了进一步解释,1将范围指定为5x5个单元格(5个单元格长,5个单元格宽,从单元格A1开始)。在单元格A7中输入行号为“4”
VB
中的基础知识,我想知道是否有人可以帮助我编写Excel工作表,使用行和列值定位单元格,并在单击按钮时将定位单元格的“值”(包含在定位单元格中的数字)增加一个特定的整数(例如+1)。我已经在常见问题中查找了,但没有结果。如果你觉得我错过了它,请提供我的链接,这样我就可以得到它。我已经在VBA
中学习了编码的基础知识,但如果您能详细介绍一下高级代码,我将不胜感激
为了进一步解释,1将范围指定为5x5个单元格
(5个单元格长,5个单元格宽,从单元格A1开始)。在单元格A7
中输入行号为“4”,在A8
中输入列号为“3”。单击按钮后,将找到该单元格,并向单元格=+1
添加一个值。作为输出,单元格“C4”中应该有数字“1”,因为它是列号和行号相交的
此外,列#cells中的值将转移到行#cell,这意味着单元格A7
的值将为“3”,而A8
的值将为“空白”。这是因为我将使用列#cells中的值作为下一个输入的行#cells值
如有任何反应、评论、回答或建议,将不胜感激。感谢您花时间阅读。:)(我很抱歉,如果我不能提供一个粗略的图像示例,因为该网站还不允许我发布图像。)
其中wksht为工作表,a为所需行,n为所需列,m为所需增量因子。我应该注意,您需要检查值以确保它是一个数字,您永远不能相信最终用户会做出正确的输入
在这里找到:我有这个给你。。在你的按钮上做这个
Sub SetAddr()
Dim x, y As Integer
Dim sCell As String
x = ActiveSheet.Range("A8").Value
y = ActiveSheet.Range("A7").Value
sCell = StrRange(y, x)
'assumed the cell is blank
If IsEmpty(ActiveSheet.Range(sCell)) Then
ActiveSheet.Range(sCell).Value = ActiveSheet.Range(sCell).Value + 1
End If
End Sub
Function StrRange(ByVal nRow As Single, ByVal nCol As Single) As String
Dim sC As String
Dim nC, nRest, nDivRes As Integer
sC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nC = Len(sC)
nRest = nCol Mod nC
nDivRes = (nCol - nRest) / nC
If nDivRes > 0 Then StrRange = Mid(sC, nDivRes, 1)
StrRange = StrRange & Mid(sC, nRest, 1) & Format(nRow)
End Function
我相信你可以做剩下的……那么你在这一点上特别坚持什么呢?非常感谢。我尚未尝试该代码,但我非常感谢您的帮助。:)不客气。。它已经在Excel2007Hello matzone上进行了测试,我已经尝试了您提供的代码,它工作得很好:)但是我遇到了代码的一些“限制”。我必须承认,我之前的问题中没有指出这一点是我的错误。1.)只要输入了一个组合,它就不会将单元格内的数字相加(它只是“1”)和2。)您能否建议其他代码,以便我可以输入多个x和y值?假设输入2个x值和2个y值?结果应该是1x1y,1x2y,2x1y,2x2y。再次感谢您的帮助!:)@马库斯。。它只更新了1号。。对于多偏移,为什么不使用循环来设置所有矩阵单元。。或者你想让它像随机的一样以你的方式出现?嗯,老实说,我只是在VBA:)的编程中崩溃了。我还没有了解loop()方法是如何工作的,或者它是如何设置的。但是谢谢你提供的代码,我想我还是从那里开始吧。为了回答您的问题,我已经有了一组我想要绘制的数字,只是您提供的代码(我认为)只适用于26x26单元格(因为字母表只有26)。我的计划图的范围实际上是50x50单元。用5个X-Y坐标来考虑每一个输入。再次感谢您的帮助,我真的很感激。:)感谢您抽出时间回答我的问题。:)
Sub SetAddr()
Dim x, y As Integer
Dim sCell As String
x = ActiveSheet.Range("A8").Value
y = ActiveSheet.Range("A7").Value
sCell = StrRange(y, x)
'assumed the cell is blank
If IsEmpty(ActiveSheet.Range(sCell)) Then
ActiveSheet.Range(sCell).Value = ActiveSheet.Range(sCell).Value + 1
End If
End Sub
Function StrRange(ByVal nRow As Single, ByVal nCol As Single) As String
Dim sC As String
Dim nC, nRest, nDivRes As Integer
sC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nC = Len(sC)
nRest = nCol Mod nC
nDivRes = (nCol - nRest) / nC
If nDivRes > 0 Then StrRange = Mid(sC, nDivRes, 1)
StrRange = StrRange & Mid(sC, nRest, 1) & Format(nRow)
End Function