No.4ベストアンサー
- 回答日時:
なんかスッキリしないので回答ではありませんが追記します
参考にもならないかも知れませんので うざったければ読み飛ばし無視してください
ActiveCellからUserFormに値を取得すると言う事は
ActiveCellセルを変えたい場合、UserFormを閉じると言う事でしょうか・・
閉じるのは面倒なのでvbModelessを使用するのでしょうか?
vbModelessを使用するなら、値の取得にCommandButtonを使用するより
当該シートのSelectionChangeイベントなどでUserFormに値を渡すのはどうでしょう。
例を書きます(オブジェクト型は判り難いかもなので数値で)
UserFormオブジェクト名UserForm1
標準モジュールに
Option Explicit
Public r As Long 'グローバル変数
Public c As Long
Sub test() 'ここからUserForm1を表示
UserForm1.Show vbModeless
End Sub
該当シートモジュールに
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
r = Target.Row
c = Target.Column
If c = 2 Then
On Error Resume Next '不要と思われますが念のため
UserForm1.TextBox1.Value = Cells(r, c).Value
UserForm1.TextBox2.Value = Cells(r, c).Offset(, 1).Value
Else
UserForm1.TextBox1.Value = ""
UserForm1.TextBox2.Value = ""
End If
End Sub
UserForm1はTextBox1 TextBox2が存在する事
testを実行
選択セルを変更する度にTextBoxに値が入ると思います
シートイベントを使用する事やvbModelessを使用する事には
少し制約があります
例えば
イベントトリガーとなり得る処理をVBAで行う場合 制御が必要
RefEditコントロールに不具合があるなど
一旦取得した値を保持したい場合はElse内を使用しないで行けると思います
No.3
- 回答日時:
こんにちは 横からすみません
補足のコードを見るとB列とC列になっているようですけれど
実行カラムを限定するのなら取得カラム側のカラムナンバーをご質問のように定数を入れれば良いのではないでしょうか
他には、ActiveCellを起点にするならOffsetで指定します
If Columns(2) Then ・・・ Columns(2) オブジェクトなので
この場合Intersectを使用すれば出来ると思います
単純に考えると
If ActiveCell.Column = 2 Then かな・・
オブジェクトを使う場合
If Not Intersect(ActiveCell, Columns(2)) Is Nothing Then
など書き方は色々ありますね
With Worksheets("Sheet1")
他のシートで実行してもWorksheets("Sheet1")の値を取得したいと言う事?
ここは良く分からないけど・・画像を見るとあくまでSheet1の話と言う事なら
ActiveCell.Column = 2で条件を絞るついでにSheet1も限定してこんな感じかな
>列がB列ならばをつけくわえたいのです。
まんまで無くすいません
With ActiveCell
If ActiveSheet.Name = "Sheet1" And .Column = 2 Then
TextBox1.Text = .Value 'B列で条件を限定しているのでB列該当セルの値
TextBox2.Text = .Offset(, 1).Value '上記同様C列該当セル
End If
End With
End Sub
ActiveCellを起点にOffsetしているのでActiveCell.Rowを取得する必要はないです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) テキストボックスの値を該当セルに登録する方法 2 2022/11/23 18:47
- Excel(エクセル) 年月表示を取り出すには 5 2023/02/23 22:51
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) エクセルでセルの日付を和暦表示設定にしたらおかしなことに? 3 2022/05/25 11:47
- Visual Basic(VBA) テキストボックス1の値に対するテキストボックス2に表示する値 1 2022/04/05 14:35
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- Excel(エクセル) エクセルで日付が入っているセルを一定の法則に従って違うセルに表示したい 2 2022/04/04 17:16
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
ExcelVBA修正のお願い
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBAで指定範囲内の空白セルを左...
-
【VBA】複数行あるカンマ区切り...
-
Changeイベントでの複数セルの...
-
targetをA列のセルに限定するに...
-
VBAで10行おきにセルの下に罫線...
-
VBAを使って検索したセルをコピ...
-
VBA 列が空白なら別のマクロへ...
-
VBAで、特定の文字より後を削除...
-
Excel VBA でテキストボックス...
-
VBAのFind関数で結合セルを検索...
-
VBマクロ 色の付いたセルを...
-
【Excel VBA】カンマと改行コー...
-
データグリッドビューの一番最...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
マクロ 最終列をコピーして最終...
-
VBAを使って検索したセルをコピ...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
Excel(M365) Vlookup/セル反転(...
-
VBA指定行削除
-
VBAでのリスト不一致抽出について
-
C# dataGridViewの値だけクリア
-
Changeイベントでの複数セルの...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
おすすめ情報
Private Sub CommandButton1_Click()
Dim i As Long
With Worksheets("Sheet1")
i = ActiveCell.Row
TextBox1.Text = .Cells(i, 2)
TextBox2.Text = .Cells(i, 3)
End With
End Sub
このコードに 列がB列ならばをつけくわえたいのです。
おしえてくれませんでしょうか
If Columns(2) Thenをつけると
型が一致しませんとでます。