dポイントプレゼントキャンペーン実施中!

業務短縮化のために、VBAを使って社内のスケジュール表を作成しています。
内容としてはA3からA33には日付が入力されていて、B2からK2まで各メンバーの名前か表示されています。C3からK33まで各メンバーの予定が手入力されています。

やりたいことは
ユーザーフォームを使用して
名前 日時 場所 内容が入力してもらい、登録ボタンを押すと各メンバーの予定表に自動入力されるものです。
そして名前はタブで選択できるようにしたいのです。
検索の仕方が悪いのか知識不足もありますが、あまり捗りません…

条件がおおいですが、どうか解決して頂けると嬉しいです。
何卒宜しくお願いします。

A 回答 (2件)

Private Const SCHEDULE_WORKSHEET_NAME As String = "Schedule"



Public Enum SCHEDULE_WORKSHEET_MATRIX
START_ROW = 2
START_COL = 2
End Enum

Public Sub CommandButton1_Click()

Dim tabName As String
tabName = TabStrip1.SelectedItem.Caption

Dim scheduleWorksheet As Worksheet
Set scheduleWorksheet = ThisWorkbook.Worksheets(SCHEDULE_WORKSHEET_NAME)

With scheduleWorksheet
Dim nameLastCol As Long
nameLastCol = .Cells(SCHEDULE_WORKSHEET_MATRIX.START_ROW, Columns.Count).End(xlToLeft).Column

Dim nameCol As Long
nameCol = WorksheetFunction.Match(tabName, Range(.Cells(SCHEDULE_WORKSHEET_MATRIX.START_ROW, 1), .Cells(SCHEDULE_WORKSHEET_MATRIX.START_ROW, nameLastCol)), 0)

Dim dayLastRow As Long
dayLastRow = .Cells(Rows.Count, 1).End(xlUp).Row

Dim dayRow As Long
dayRow = 3
Do Until DateValue(.Cells(dayRow, 1)) = DateValue(TextBox1.Value)
dayRow = dayRow + 1
Loop

.Cells(dayRow, nameCol) = TextBox2.Text & vbCrLf & TextBox3.Text

End With

End Sub

Public Sub UserForm_Initialize()

With ThisWorkbook.Worksheets(SCHEDULE_WORKSHEET_NAME)
Dim nameLastCol As Long
nameLastCol = .Cells(SCHEDULE_WORKSHEET_MATRIX.START_ROW, Columns.Count).End(xlToLeft).Column

Dim nameArray As Variant
nameArray = WorksheetFunction.Transpose(Range(.Cells(SCHEDULE_WORKSHEET_MATRIX.START_ROW, SCHEDULE_WORKSHEET_MATRIX.START_COL), .Cells(SCHEDULE_WORKSHEET_MATRIX.START_ROW, nameLastCol)))

Dim loopCount As Long
For loopCount = LBound(nameArray) To UBound(nameArray)
TabStrip1.Tabs.Item(loopCount - 1).Caption = nameArray(loopCount, 1)
Next loopCount
End With

End Sub

名前はフォームから取得しているので消しました。
「VBAでスケジュール表を作成しています」の回答画像2
    • good
    • 0

無償のグループウェアの導入を検討してはいかがでしょうか。



http://www.iqube.net/free_groupware_comparing.html
    • good
    • 0

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