VBA初心者です。ユーザーフォームをアクセスフォームのように使用したいのですが、チェックボックスとオプションボタンのリンクがうまくいきません。
「入力シート」へ
行 A 、B 、C 、…
1行 提出済、分類、年度、… この様に入力しています。
A列の提出済には、ユーザーフォームのチェックボックスにチェックがあれば、”済”が入力するようにしています。
また、B列の分類には、オプションボタンにより、”新規or増員or転入”のどれかが入力されます。
ユーザーフォームをアクセスフォーのように、「先頭」 「<」 「>」 「最後」のコマンドボタンがあり、クリックするごとに「入力シート」へ入力されているデータをリンクさせたいのですが、リンクできません。
また、ユーザーフォームの「新規登録」コマンドボタンをチェックしても、うまく最終行に入力されないです。
どうか教えて下さい。
Dim FirstRow As Long
Dim LastRow As Long
Dim DestRow As Long
Private Sub CommandButton6_Click() ← 「新規登録」ボタン
With Worksheets("入力シート")
Dim TargetRow As Integer
TargetRow = .Range("A65536").End(xlUp).Offset(1).Row
If CheckBox1.Value = True Then
.Range("A" & TargetRow).Value = "済"
ElseIf CheckBox1.Value = True Then
.Range("A" & TargetRow).Value = ""
End If
If OptionButton1.Value = True Then
.Range("B" & TargetRow).Value = "新規"
ElseIf OptionButton2.Value = True Then
.Range("B" & TargetRow).Value = "増員"
Else
.Range("B" & TargetRow).Value = "転入"
End If
.Range("C" & TargetRow).Value = TextBox1
End With
CheckBox1.Value = False
OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
TextBox1.Text = ""
OptionButton1.SetFocus
End Sub
ここは、余談
Private Sub UserForm_Initialize()
Worksheets("入力シート").Select
FirstRow = Range("A1").CurrentRegion.Row + 1
LastRow = Range("A1").CurrentRegion.Rows.Count
DestRow = FirstRow
LinkCell
Dim IRow As Long
With Worksheets("備考リスト")
IRow = .Range("A" & Rows.Count).End(xlUp).Row
End With
With ComboBox1
.ColumnCount = 1
.ColumnWidths = "50"
.RowSource = "備考リスト!B3:B13" & IRow
End With
End Sub
ここからが上手くいきません!
Sub LinkCell()
Dim strRang As String
strRang = "C" & DestRow
TextBox1.ControlSource = strRang
strRang = "D" & DestRow
TextBox2.ControlSource = strRang
Label10.Caption = DestRow - 1 & " / " & LastRow - 1
End Sub
No.1ベストアンサー
- 回答日時:
どこかでユーザフォームを表示する命令(例えば、UserFOrm1.Show)を実行していると思いますが、その時にアクティブになっているシートのセルD?がControlSourceに設定されているものと思います。
よって、入力シートがアクティブの状態でShowしていれば想定通りのリンクとなりますが、そうでない場合は、頓珍漢なシートとリンクしてしまっているものと思われます。必ず入力シートとリンクしたければ、ControlSourceの設定にシート名を含めれば、いけると思います。
例えば、strRang = "入力シート!C" & DestRow
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お肉の下のシートを煮込んでし...
-
2つのシート間での重複データ...
-
エクセルを利用して、日計と累...
-
毎日の日計を別シートに自動で...
-
excel シート1の奇数(偶数)...
-
エクセルで1行だけ数式が反映さ...
-
エクセルで○のついた項目を抽出
-
チュロス袋の代用
-
エクセルにて2つの列の組み合わ...
-
指定した条件でTRANSPOSE関数を...
-
メールでエクセルの添付方法
-
エクセル ○印がついている行を...
-
Excelのプルダウンで選択した項...
-
自動車のシートのような座椅子
-
エクセル 時間の列が不ぞろいな...
-
ガラスシート
-
条件にマッチする行を抽出するV...
-
2センチ四方くらいのタイルを...
-
複数シートのセルの 記号の数...
-
フライパンで魚を焼く時のフラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
お肉の下のシートを煮込んでし...
-
エクセルを利用して、日計と累...
-
エクセルのシートをコピーして...
-
2つのシート間での重複データ...
-
毎日の日計を別シートに自動で...
-
条件にマッチする行を抽出するV...
-
エクセルで1行だけ数式が反映さ...
-
エクセルで2つのシートに同じ名...
-
指定した条件でTRANSPOSE関数を...
-
excel シート1の奇数(偶数)...
-
エクセルでフラグがたっている...
-
チュロス袋の代用
-
Excelで複数のシートに列のグル...
-
エクセル ○印がついている行を...
-
EOMONTH関数の代わり
-
EXCELで受験票を作成したい(名...
-
エクセルで○のついた項目を抽出
-
複数シートのセルの 記号の数...
-
VBA 縦のデータを横にするコード
-
複数シートの列、幅の一括変更方法
おすすめ情報