私には難問がありますが、ExcelVBAを使用した方がうまくいくかどうかはわかりません。それについて考えると、VBAが最適に機能すると思いますが、それを機能させる方法がわかりません。
ブックに2つのページがあります。1つはフォーム、もう1つはデータベースです。フォームのプルダウンメニューで、フォームの残りの部分にデータを入力します。それは...私が望むのは、送信を押してフォームの値を変更できるようにすることです。新しいデータが古いデータを上書きします。
これは可能ですか?
これが私が話しているシートへのリンクです。
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
私が知る限り、これは私が主に望んでいることを実行しますが、それを希望どおりに機能させるために必要な場所に追加するために、どこで分割するかがわかりません。
私が言えるのはこれです。コピーして貼り付けますが、見つかった行にデータを貼り付け、その行の数を上書きしないようにします。
私がここに持っている2つのスクリプトで誰かがそれを可能にするのを手伝ってもらえますか?