Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用行和列值定位单元格,并增加单元格';单击按钮时,s值乘以1_Vba_Excel - Fatal编程技术网

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