プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (1件)

どこかでユーザフォームを表示する命令(例えば、UserFOrm1.Show)を実行していると思いますが、その時にアクティブになっているシートのセルD?がControlSourceに設定されているものと思います。

よって、入力シートがアクティブの状態でShowしていれば想定通りのリンクとなりますが、そうでない場合は、頓珍漢なシートとリンクしてしまっているものと思われます。
必ず入力シートとリンクしたければ、ControlSourceの設定にシート名を含めれば、いけると思います。
例えば、strRang = "入力シート!C" & DestRow
    • good
    • 0
この回答へのお礼

ご返事が遅くなり、大変申し訳ございません。
参考に取り組んでみます。

お礼日時:2016/05/22 18:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!