回答受付が終了しました

エクセルのマクロは完全に初心者です。選挙用フォームを作りたいのですが、すみませんがご教授お願いします。

Excel | Visual Basic26閲覧

回答(1件)

0

白紙のシートのシート見出しを右クリック、コードの表示と進み、以下をコピペしてVBEditorを閉じます。 Private Sub 投票用ブック作成() Dim sh As Worksheet Dim rng As Range ActiveSheet.Copy With ActiveSheet .Name = "投票ページ" '名前を付けて保存 ActiveWorkbook.SaveAs "D:\Sample\Vote.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled 'ボタンの位置 Set rng = .Range("B1") With .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height) .Text = "投票" .Name = "投票ボタン" .OnAction = ActiveWorkbook.Name & "!" & ActiveSheet.CodeName & ".投票" End With 'リストはその1列手前 rng.Offset(, -1).Validation.Add Type:=xlValidateList, Formula1:="田中,佐藤,山田" End With Set sh = Sheets.Add(After:=ActiveSheet) sh.Name = "投票結果" sh.Visible = xlSheetVeryHidden End Sub Private Sub 投票() Dim fnd As Range, buf As Range Dim sh As Worksheet Set sh = Sheets("投票結果") Set buf = ActiveSheet.Shapes("投票ボタン").TopLeftCell.Offset(, -1) If buf.Value = "" Then Exit Sub With sh.Cells(Rows.Count, "A").End(xlUp).Offset(1) Set fnd = sh.Range("B:B").Find(Application.UserName, LookAt:=xlWhole) If fnd Is Nothing Then .Value = buf.Value .Offset(, 1).Value = Application.UserName MsgBox "投票完了" Else: MsgBox "重複投票です。", vbCritical, "無効" End If buf.ClearContents End With End Sub Private Sub 開票() With Sheets("投票結果") .Visible = True .Activate End With End Sub Private Sub 投票用ブック作成()の中にカーソルがある状態でF5→投票表ブック作成 Private Sub 開票()の中にカーソルがある状態でF5→開票 PCのユーザーネームでチェックしているので、同じPCから複数人が投票は出来ないです。 お遊びで作っただけなのでノーサポートとします。 アレンジはご自分で、不明点はGoogle先生へどうぞ。 わけわからなかったら捨ててください。