エラー91をスローし続けるコマンドボタンクリックイベント用のコードがあります。コードをステップ実行すると、 'Setvalueue 'コードが実行されます。下記のコードスニペットを参照してください。私はコード自体の検査でそれを理解することはできません。UserFormコマンドボタンコード - エラー91:オブジェクト変数またはWithブロック変数が設定されていません
「findvalue」は範囲オブジェクトとしてディメンション化されています。 'DataSH'はレコードID(列B)の列で始まるマスターデータテーブルが存在するワークシートです。ユーザーフォーム要素は、DataSHのデータテーブルのそれぞれの列に設定されます。
Private Sub cmdEdit_Click()
'declare the variables
Dim findvalue As Range
Dim cNum As Integer
Dim DataSH As Worksheet
'error handling
On Error GoTo errHandler:
'hold in memory and stop screen flicker
Application.ScreenUpdating = False
Set DataSH = Sheet1
このスニペットをから取られることがクリックイベントサブルーチンは、それらUF要素(の値に基づいてDataSHで選択したレコードID(行番号識別子)の行に適切な列データを更新するための設定であります変更または削除された値)。要点は、UF要素(テキストボックスとコンボボックス)で行った変更をDataSHのマスターデータテーブルに更新することです。
Set findvalue = DataSH.Range("B:B"). _
Find(What:=Me.tbRecID.Value, LookIn:=xlValues, LookAt:=xlWhole)
'update the values
findvalue = tbRecID.Value
findvalue.Offset(0, 1) = tbRecDate.Value
findvalue.Offset(0, 2) = cmbRecLoc.Value
findvalue.Offset(0, 3) = cmbRecCust.Value
findvalue.Offset(0, 4) = tbRecAmt.Value
findvalue.Offset(0, 5) = cmbRecComm.Value
findvalue.Offset(0, 6) = cmbRecPrin.Value
findvalue.Offset(0, 7) = tbRecTerr.Value
findvalue.Offset(0, 8) = tbRecRep.Value
あなたは、Setステートメントを使用してfindvalueを設定し、それに別の値を代入しようとした:それは名前である場合、あなたはこのようにDataSHを設定する必要があります。 – Rdster
@Rdsterしかし、現在の「findvalue」値を確認しているだけなので、エラーは発生しません。 – user3598756
@Rdsterテキストボックスとコンボボックスの要素は、レコードがリストボックス内でダブルクリックされると(別のサブルーチン) DataSHのデータテーブルから)を同じUF上に作成します。 'findvalue'は、そのイベントのtbRecIDテキストボックス要素に入力されたレコードIDに設定されます。残りのコードは、 'findvalue'オブジェクトを参照ポイントとして使用して、UF要素(つまり変更された要素)の値をDataSHテーブルの適切なフィールド(および拡張子はリストボックス)に返します。少なくとも私はそれを正しく説明したと思う。 –