
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
テキストボックスの値を該当セルに登録する方法
Visual Basic(VBA)
-
ListBox1をClickしたときのイベント
Visual Basic(VBA)
-
Countifよりも早く重複数をカウントする方法ありますか?
Excel(エクセル)
-
4
【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。
Visual Basic(VBA)
-
5
シート間で同じ値があったら指定範囲をコピーして貼り付け
Visual Basic(VBA)
-
6
VBA 罫線について B列3行目から21行毎にデータがはいります。 データがはいったらデータが入った
Visual Basic(VBA)
-
7
ユーザーフォームでのリストボックス連動(VBA)
Visual Basic(VBA)
-
8
VBA言語プログラミング
Visual Basic(VBA)
-
9
VBAプログラミング
Visual Basic(VBA)
-
10
vbaの計算 if elseと範囲について
Visual Basic(VBA)
-
11
VBA同じシートの別ブックに転記していく方法
Visual Basic(VBA)
-
12
改ページを挿入
Visual Basic(VBA)
-
13
【マクロ】表への繰り返し転記について
Visual Basic(VBA)
-
14
[Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。
Visual Basic(VBA)
-
15
ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています
Visual Basic(VBA)
-
16
ワークブックを追加したあとに シート名を変更することは可能でしょうか
Visual Basic(VBA)
-
17
エクセル 2つの列にある値の完全一致を抜き出すVBA
Visual Basic(VBA)
-
18
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
-
19
いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう
Visual Basic(VBA)
-
20
worksheets & rows メソッドは失敗しました。のエラー回避のやり方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Worksheets メソッドは失敗しま...
-
5
VBAを使って検索したセルをコピ...
-
6
エクセル 2つの表の並べ替え
-
7
VBA 別ブックからの転記の高速...
-
8
空白セルをとばして転記
-
9
Excel VBA でテキストボックス...
-
10
複数列のコピーについて
-
11
VBAでのリスト不一致抽出について
-
12
Cellsのかっこの中はどっちが行...
-
13
IIF関数の使い方
-
14
VBAを用いて条件付きの平均値、...
-
15
重複データの合算(VBA)
-
16
GridViewの行の入れ替えについて
-
17
データグリッドビューの一番最...
-
18
VBAのFind関数で結合セルを検索...
-
19
VBAで10行おきにセルの下に罫線...
-
20
エクセルVBAでセルの値を名前定...
おすすめ情報
公式facebook
公式twitter
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をつけると
型が一致しませんとでます。