我有一个困惑,我不知道使用 excel VBA 是否会更好。考虑一下,我相信 VBA 会工作得最好,但我不知道如何让它工作。
我在工作簿中有两个页面,一个是表单,另一个是数据库,我希望表单中的下拉菜单填充表单的其余部分。它确实......我想要的是能够更改表单按提交的值,并且新数据将覆盖旧数据。
这可能吗?
这是我正在谈论的工作表的链接。
http://dl.dropbox.com/u/3327208/Excel/Change.xlsx
这是我现在正在使用的脚本...它获取工作表,将所有内容复制到一行获取该行,将其移动到 NCMR 数据选项卡,然后从原始工作表中清除新行上的数据。
这段代码在技术上可以工作,但我需要做的是让它使用相同的概念,但不是在工作表末尾创建一个新行,而是找到原始行并将数据从 B 替换到 U 中的任何行原本在。
我知道这是可能的,我只是不知道如何。
'Copy Ranges Variable
Dim c As Variant
'Paste Ranges Variable
Dim p As Range
'Setting Sheet
Set wsInt = Sheets("Form")
Set wsNDA = Sheets("Data")
Set p = wsInt.Range("A14")
With wsInt
c = Array(.Range("B11"))
End With
For i = LBound(c) To UBound(c)
p(i + 1).Value = c(i).Value
Next
With wsNDA
Dim Lastrow As Long
Lastrow = .Range("B" & Rows.Count).End(xlUp).Row + 1
wsInt.Rows("14").Copy
With .Rows(Lastrow)
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
.Interior.Pattern = xlNone
End With
With .Range("A" & Lastrow)
If Lastrow = 3 Then
.Value = 1
Else
.Value = Val(wsNDA.Range("A" & Lastrow - 1).Value) + 1
End If
.NumberFormat = "0#######"
End With
End With
End Sub
我找到了这段代码:
Sub CopyTest()
Dim selrow As Range, rngToCopy As Range
With Worksheets("PD DB")
Set selrow = .Range("B:B").Find(.Range("BA1").Value)
'find the cell containing the value
Set rngToCopy = Union(selrow.Offset(0, 9), selrow.Offset(0, 12))
'use offset to define the ranges to be copied
rngToCopy.Copy Destination:=Worksheets("Edit Sheet").Range("B50")
'copy and paste (without Select)
End With
End Sub
据我所知,这将做我最想做的事,但我似乎无法弄清楚在哪里分解它以将它添加到我需要让它按我想要的方式工作的地方。
我能说的是,它会复制和粘贴,但我想确保它将数据粘贴到它找到的行中,而不是覆盖所述行的数量。
有人可以通过我这里的两个脚本帮助实现这一点吗?