Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12371 / 76734 ←次へ | 前へ→

【69886】Re:ユーザーフォーム検索 更新について
発言  hono1215  - 11/9/17(土) 14:34 -

引用なし
パスワード
   ▼ichinose さん:
早速の御教授ありがとう御座います。
>モジュールレベルで宣言
は調べて理解できました。
その後、更新ボタンをユーザーフォームに配置しました
更新する際の記述が解らないのですが、少し自分で調べてみます。

Private Sub CommandButton3_Click()
Value = UserForm1.TextBox3.Value
FoundCell.Offset(0, -3).Value = UserForm1.TextBox1.Value
FoundCell.Offset(0, -2).Value = UserForm1.TextBox2.Value
FoundCell.Offset(0, 1).Value = UserForm1.TextBox4.Value
FoundCell.Offset(0, 4).Value = UserForm1.TextBox5.Value
End Sub

これではエラーがでるので、お門違いな事をやっているのでしょう…


>▼hono1215 さん:
>おはようございます。
>
>>下記記述で、ユーザーフォームから検索。
>>該当データをユーザーフォーム上に呼び出しています。
>>ここから、呼び出したデータを修正。元のセルに更新保存を行いたいのですが、可能でしょうか?
>
>提示されたコード内で、ユーザーに検索文字列を入力させ、
>その文字列で特定シートの指定セル範囲を検索していますね?
>そこで見つかったセルを又は、そのセルのアドレスをデータ修正後まで
>保持しておけば、元セルデータを戻すことは可能です。
>検索して見つかったセルは、FoundCellという変数に入っていますね?
>この変数は、プロシジャーレベル宣言された変数ですから、
>CommandButton2_Clickというプロシジャーの実行が終了すれば、変数そのものが
>無くなってしまいます。
>プロシジャーの実行が終了しても値を保持するには、この変数を
>モジュールレベルで宣言することです。
>
>では、モジュールレベルで変数を宣言するとは、どうすればよいか?
>
>
>>
>>Private Sub CommandButton2_Click()
>>Dim SearchKey As String
>>Dim SearchArea As Range
>Dim FoundCell As Range  'これをこのモジュールに1行目に宣言する
>          'プロシジャーの1行目ではなく、モジュールの1行目です
>>Dim ws As Worksheet, fndflg As Boolean
>>'検索語入力
>>SearchKey = Application.InputBox( _
>>Prompt:="LotNo,を入力して下さい。", Type:=2)
>>If SearchKey = "" Or SearchKey = "False" Then
>>Exit Sub
>>End If
>>'検索処理
>>'検索範囲
>>fndflg = False
>>For Each ws In Worksheets
>>If ws.Name Like "*P*" Then
>>Set SearchArea = ws.Range(ws.Range("d5"), ws.Range("d5").End(xlDown))
>>Set FoundCell = SearchArea.Find( _
>>What:=SearchKey, _
>>SearchOrder:=xlByRows, _
>>MatchCase:=False)
>>'見つかった場合の処理
>>If Not FoundCell Is Nothing Then
>>
>>fndflg = True
>>Exit For
>>End If
>>End If
>>Next
>>If fndflg = True Then
>>MsgBox FoundCell.Address
>>UserForm1.TextBox3.Value = FoundCell.Value
>>UserForm1.TextBox1.Value = FoundCell.Offset(0, -3).Value
>>UserForm1.TextBox2.Value = FoundCell.Offset(0, -2).Value
>>UserForm1.TextBox4.Value = FoundCell.Offset(0, 1).Value
>>UserForm1.TextBox5.Value = FoundCell.Offset(0, 4).Value
>>UserForm1.ComboBox2.Value = ws.Name
>>Else
>>MsgBox "該当は存在しません。", vbCritical
>>End If
>>Set SearchArea = Nothing
>>Set FoundCell = Nothing
>>
>>End Sub
>
>このようにすると、戻すセルは、FoundCellにあるのですから、
>後は考えてください。

4 hits

【69883】ユーザーフォーム検索 更新について hono1215 11/9/17(土) 7:22 質問
【69884】Re:ユーザーフォーム検索 更新について ichinose 11/9/17(土) 9:33 発言
【69886】Re:ユーザーフォーム検索 更新について hono1215 11/9/17(土) 14:34 発言
【69887】Re:ユーザーフォーム検索 更新について ichinose 11/9/17(土) 22:30 発言
【69891】Re:ユーザーフォーム検索 更新について hono1215 11/9/20(火) 15:45 お礼

12371 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free