vbaには、特定のセルに新しい値を保存するたびに、メッセージボックスに古い値セルに記憶されていると私はすぐ下保存した新しい値を何であったか、コードの出力ウィンドウは下の写真の中で次のように来ることvbaを使用してデータベーステーブルにアクセスするためのexcelでメッセージボックスの表示データをエクスポートするには
Option Explicit
Dim OldVals As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As Range
For Each myCell In Target
If OldVals.Exists(myCell.Address) Then
MsgBox "New value of " & Replace(myCell.Address, "$", "") & " is " & myCell.Value & "; old value was " & OldVals(myCell.Address)
Else
MsgBox "No old value for " + Replace(myCell.Address, "$", "")
End If
OldVals(myCell.Address) = myCell.Value
Next myCell
End Sub
エクスポートしたいvbaを使用してアクセスデータベーステーブルにメッセージボックスに表示された値
しかし、私はエクセルシートのセルの値をエクスポートして保存するコードを書いています。コードは
Const TARGET_DB = "\Database3.accdb"
Sub PushTableToAccess()
Dim cnn As ADODB.Connection
Dim MyConn
Dim rst As ADODB.Recordset
Dim i As Long, j As Long
Dim Rw As Long
Sheets("Sheet1").Activate
Rw = Range("A1").End(xlDown).Row
Set cnn = New ADODB.Connection
MyConn = ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open MyConn
End With
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:="Table1", ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Options:=adCmdTable
For i = 2 To Rw
rst.AddNew
For j = 1 To 3
rst(j) = Cells(i, j).Value
Next j
rst.Update
Next i
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Sub
上記のコードは、Excelテーブルのすべての値をエクスポートしてデータベーステーブルに保存します。
しかし、両方のコードを結合する方法がわからないので、最初のコードはいつでも古い値と新しい値を表示し、OKボタンをクリックするとメッセージボックスに表示された値をエクスポートして保存します。(たとえば、A1の新しい値は7、古い値は88)を使用してデータベーステーブル1にアクセスします。