VBA
~フォームの構文~の続きです。
'[確定]ボタンをクリックした時の処理
Private Sub ConfirmButton_Click()
Const NumberColumn As String = "A" '転記先のシートにおいて連番を記入する列の列番号
Const DateColumn As String = "B" '転記先のシートにおいて意見が投書された日付を記入する列の列番号
Const DepartmentColumn As String = "C" '転記先のシートにおいて所属部署名を転記する列の列番号
Const TextColumn As String = "D" '転記先のシートにおいて投書内容を転記する列の列番号
Const myGroupName As String = "DepartmentSelect" '所属部署選択用のオプションボタンのGroupNameプロパティに設定した値
Dim StoragePath As String, PostFileName As String, PostSheetName As String _
, Department As String, myText As String, PostBook As Workbook _
, PostRow As Long, PostingOK As Boolean, myWindow As Window _
, buf As Variant, co As Control, myInformation As String _
Department = "": myText = ""
For Each co In Opinion_Box.Controls
If TypeName(co) = "OptionButton" Then
If co.Value = True And co.GroupName = "DepartmentSelect" Then _
Department = co.Caption
End If
Next co
myText = Contents_of_posting.Value
myInformation = ""
If Department = "" Then myInformation = "選択回答 "
If myText = "" Then myInformation = myInformation & "その他"
myInformation = Replace(RTrim(myInformation), " ", "と")
If myInformation = "" Then
Select Case MsgBox("下記の内容が入力されています。" & vbCrLf _
& "この内容でアンケートを送信してよろしいですか?" & vbCrLf _
& " [はい] : この内容でアンケートを送信します。" & vbCrLf _
& " [いいえ] : 入力フォームに戻って投書内容を修正します。" & vbCrLf _
& " [キャンセル] : 投書を中止して入力フォームを閉じます。" _
& vbCrLf & vbCrLf & "【】 " & Department _
& vbCrLf & vbCrLf & "【】 " & vbCrLf & myText _
, vbYesNoCancel + vbInformation, "アンケート内容確認")
Case vbYes
GoTo Label_Posting
Case vbCancel
Unload Me
End Select
Exit Sub
Else
If MsgBox( _
myInformation & "が入力されていません。" & vbCrLf & vbCrLf _
& "[再試行] : フォームでの入力に戻ります。" & vbCrLf _
& "[キャンセル] : 入力を中止し、フォームを閉じます。" _
, vbRetryCancel + vbExclamation, "未入力項目あり") _
= vbCancel Then Unload Me
Exit Sub
End If
Label_Posting:
myInformation = vbCrLf _
& "フォームに入力いただいた内容を投函することができません。"
Call Confirm_posting_place(myInformation, PostingOK _
, StoragePath, PostFileName, PostSheetName)
With Application
.ScreenUpdating = False
.Calculation = xlManual
.DisplayAlerts = False
End With
buf = ""
On Error Resume Next
Set PostBook = Windows(PostFileName).Parent
buf = PostBook.Path
On Error GoTo 0
If buf = StoragePath Then
Set myWindow = PostBook.Windows(1).NewWindow
Else
Set PostBook = Workbooks.Open(StoragePath & "\" & PostFileName)
Set myWindow = PostBook.Windows(1)
End If
myWindow.Visible = False
With PostBook
.Windows(.Windows.Count).Visible = False
ThisWorkbook.Activate
With .Sheets(PostSheetName)
PostRow = 0
PostRow = .Range(DateColumn & .Rows.Count).End(xlUp).Row + 1
.Range(NumberColumn & PostRow).Value _
= Int(WorksheetFunction.Max(.Columns(NumberColumn))) + 1
With .Range(DateColumn & PostRow)
.Value = Date
.NumberFormatLocal = "ggge""年""m""月""d""日""(aaa)"
End With
.Range(DepartmentColumn & PostRow).Value = Department
.Range(TextColumn & PostRow).Value = myText
End With
End With
With myWindow
.Visible = True
.Parent.Save
.Close
End With
ThisWorkbook.Activate
With Application
.Calculation = xlAutomatic
.ScreenUpdating = True
.DisplayAlerts = True
End With
MsgBox "ありがとうございました!アンケート回答入力内容が送信完了しました。", vbInformation, "完了"
Unload Me
End Sub
以上です。宜しくお願いします。
お礼
回答していただきありがとうございます。m(_ _)m CheckBox1についてはもう一度確認してみます。 あと、sir( )については知らなかったので試してみたいと思います。 ありがとうございました!