excel vba数据录入

excel vba数据录入,第1张

试试:

Sub test()
    Dim arr, arr2
    arr1 = Sheets("表1")Range("b3")Resize(1, 4)
    With Sheets("表2")
         n = Range("b65536")End(xlUp)Row - 2
         If n < 1 Then
            Range("b3")Resize(1, 4) = arr1
            MsgBox "数据已追加,请核查" & Space(10), 64, " 提示:"
          Else
            arr2 = Range("b3")Resize(n, 2)
            For i = 1 To n
                If arr2(i, 1) = arr1(1, 1) Then
                   MsgBox "数据已存在,请核查:表2第 " & i + 2 & " 行" & Space(10), 16, " 提示:"
                   Exit Sub
                End If
            Next
            Range("b" & n + 3)Resize(1, 4) = arr1
            MsgBox "数据已追加,请核查" & Space(10), 64, " 提示:"
         End If
    End With
End Sub

方法1:
Sub test()
Dim W, T As Long
W = ApplicationInputBox("请输入W变量的值:", "W变量输入窗口", 100, Type:=1)
If W = False Then Exit Sub
T = ApplicationInputBox("请输入T变量的值:", "T变量输入窗口", 200, Type:=1)
If T = False Then Exit Sub
MsgBox "W变量的值是:" & W & vbCrLf & "T变量的值是:" & T
End Sub
方法2
Sub test()
Dim W, T As Long, Temp As String, Arr
Temp = InputBox("请输入W,T变量的值以"",""隔开:", "变量输入窗口", "100,200")
If Temp = "" Then Exit Sub
Arr = Split(Temp, ",")
W = Arr(0)
T = Arr(1)
MsgBox "W变量的值是:" & W & vbCrLf & "T变量的值是:" & T
End Sub

这个公式的意思是:取值,取值的位置是 账目9月!C$22 这个单元格,再向下移动0格,向右移动ROW(A1)3格。ROW(A1)的意思是A1的行号,这里是第一行即1
当然OFFSET公式只是只是针对以上才是这样解释,具体请看下。另外需要注意的是:C$22这个单元格,已经有部分锁定了,复制公式的时候要知道他的变化。
语法
OFFSET(reference,rows,cols,height,width)
Reference 作为偏移量参照系的引用区域。Reference
必须为对单元格或相连单元格区域的引用;否则,函数 OFFSET 返回错误值 #VALUE!。
Rows 相对于偏移量参照系的左上角单元格,上(下)偏移的行数。如果使用 5 作为参数
Rows,则说明目标引用区域的左上角单元格比 reference 低 5 行。行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方)。
Cols 相对于偏移量参照系的左上角单元格,左(右)偏移的列数。如果使用 5 作为参数
Cols,则说明目标引用区域的左上角的单元格比 reference 靠右 5 列。列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。
Height 高度,即所要返回的引用区域的行数。Height 必须为正数。
Width 宽度,即所要返回的引用区域的列数。Width 必须为正数。
说明
如果行数和列数偏移量超出工作表边缘,函数 OFFSET 返回错误值 #REF!。
如果省略 height 或 width,则假设其高度或宽度与 reference 相同。
函数 OFFSET 实际上并不移动任何单元格或更改选定区域,它只是返回一个引用。函数 OFFSET 可用于任何需要将引用作为参数的函数。例如,公式
SUM(OFFSET(C2,1,2,3,1)) 将计算比单元格 C2 靠下 1 行并靠右 2 列的 3 行 1 列的区域的总值。
示例
如果将示例复制到一个空白工作表中,可能会更容易理解该示例。
如何复制示例
创建一个空白工作簿或工作表。
选择“帮助”主题中的示例。
注释 不要选择行或列标题。
从“帮助”中选择示例
按 Ctrl+C。
在工作表中,选择单元格 A1,然后按 Ctrl+V。
要在查看结果和查看返回结果的公式之间进行切换,请按 Ctrl+`(重音符),或在“公式”选项卡上的“公式审核”组中,单击“显示公式”按钮。
1
2
3
4
A
B
公式
说明(结果)
=OFFSET(C3,2,3,1,1)
显示单元格 F5 中的值 (0)
=SUM(OFFSET(C3:E5,-1,0,3,3))
对数据区域 C2:E4 求和 (0)
=OFFSET(C3:E5,0,-3,3,3)
返回错误值 #REF!,因为引用区域不在工作表中

方法1:A列没有任何数据时,Row获得的最后一行有数据的行号是1, 数据会从row+1行开始,也就是第二行,要想从第一行写入数据 要用代码判断调整(代码中没有做这个判断)

Private Sub CommandButton1_Click()
With Sheets(1)
Row = Range("A65536")End(xlUp)Row
Range("A" & Row + 1)Value = TextBox1Value
End With
End Sub

方法2: 定义了一个公共变量N来记录有数据的行每点一次按钮 N变量加1

Dim N As Long
Private Sub CommandButton1_Click()
N = N + 1
Sheets(1)Range("A" & N)Value = TextBox1Value
End Sub

你这个题目弄复杂了,螺杆或者螺钉的重量应该有个计算公式,用管径、壁厚、内螺纹等参数,加上材质的密度,应该可以得出其重量的。这样重量根据公式是自动生成的。再者,你用不同的零件编上不同的编码,在另一个表中升序排序,用vlookup函数就能实现。

Sub test()
Dim i, j As Variant
i = InputBox("请输入需要填入的内容")
Set j = Sheets("数据")Range("b:b")Find(i)
If j Is Nothing Then
MsgBox ("没有找到该应用单位")
Else
Sheets("报告")Range("P4") = j
End If
End Sub
你试试把
如果你是需要在第二个表中也要寻找对应的行,那就用for遍历的语句改写。很简单

Excel中可以利用将inputbox的结果复制给变量的方式,在对话框里输入参数。
软件版本:office2007
举例说明如下:
1在VBA中输入如下代码:
2在inputbox对话框中输入参数:
就会得到相应的结果:
3输入的参数不同,结果也就不同:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13341590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-18
下一篇 2023-07-18

发表评论

登录后才能评论

评论列表(0条)

保存