Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


27789 / 76732 ←次へ | 前へ→

【54260】Re:フォームを用いて値をシートに記入するには
発言  かみちゃん  - 08/3/2(日) 16:13 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>以上ですが(2)がまったくできていません。
>このような場合にユーザーフォームを使うのでしょうか。

Time(From)、Time(To)をComboBox(プルダウン)で選択させたいならば、
UserFormが簡単かと思います。
それで今までのスレッドを、総合すると、以下のような感じにしてはいかがでしょうか?

BeforeDoubleClickイベントのコードにしていますが、それと同等のコードが
Sampleマクロです。
Sampleマクロは、セルの書き込み部分など、できるだけ簡略にしています。
その他の部分は、できるだけ、にしもりさんが今できているものに近い形にして
あります。

'◆シートモジュール
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim Cnm As String
 Dim Pnm As String
 Dim Mnm As String
 Dim Tnm As String
' Dim ws1 As Worksheet
' Dim i As Long
 
 If Not Application.Intersect(Range("B3:B100"), Target) Is Nothing Then
  With Target
   Cnm = .Offset(, -1).Value
   Pnm = .Offset(0, 0).Value
   Mnm = .Offset(, 3).Value
   Tnm = .Offset(, 5).Value
  End With
  Set ws1 = Worksheets("history")
'  For i = 5 To ws1.Range("B65535").End(xlDown).Row
'   If IsEmpty(ws1.Cells(i, 2).Value) Then
'    ws1.Cells(i, 2).Value = Cnm
'    ws1.Cells(i, 3).Value = Pnm
'    ws1.Cells(i, 4).Value = Mnm
'    ws1.Cells(i, 9).Value = Tnm
'    Exit For
'   End If
'  Next i
  i = ws1.Range("B65536").End(xlUp).Row + 1
  If i < 5 Then
   i = 5
  End If
  ws1.Cells(i, 2).Value = Cnm
  ws1.Cells(i, 3).Value = Pnm
  ws1.Cells(i, 4).Value = Mnm
  ws1.Cells(i, 9).Value = Tnm
  Cancel = True
  UserForm1.Show
 End If
End Sub

'◆UserFormモジュール
Option Explicit

Private Sub CommandButton1_Click()
 Dim From_Str As String
 Dim To_Str As String
 Dim Hours As Double
 
 If Me.ComboBox1.Value <> "" And Me.ComboBox2.Value <> "" Then
  From_Str = Me.ComboBox1.Value & ":" & Me.ComboBox2.Value
 End If
 If Me.ComboBox3.Value <> "" And Me.ComboBox4.Value <> "" Then
  To_Str = Me.ComboBox3.Value & ":" & Me.ComboBox4.Value
 End If
 If From_Str <> "" And To_Str <> "" Then
  Hours = (CDate(To_Str) - CDate(From_Str)) * 24
  'Date
  ws1.Cells(i, 5).Value = Me.TextBox1.Value
  'Time(From)
  ws1.Cells(i, 6).Value = CDate(From_Str)
  'Time(To)
  ws1.Cells(i, 7).Value = CDate(To_Str)
  'Hours
  ws1.Cells(i, 8).Value = (CDate(To_Str) - CDate(From_Str)) * 24
  'Place
  ws1.Cells(i, 10).Value = Me.TextBox2.Value
  'Notese
  ws1.Cells(i, 11).Value = Me.TextBox3.Value
 End If
 Unload UserForm1
End Sub

Private Sub UserForm_Initialize()
 Dim i As Integer
 Me.TextBox1.Value = Date
 With Me.ComboBox1
  For i = 1 To 24
   .AddItem i
  Next
 End With
 With Me.ComboBox2
  For i = 0 To 45 Step 15
   .AddItem i
  Next
 End With
 With Me.ComboBox3
  For i = 1 To 24
   .AddItem i
  Next
 End With
 With Me.ComboBox4
  For i = 0 To 45 Step 15
   .AddItem i
  Next
 End With
End Sub

'◆標準モジュール
Option Explicit

Public i As Long
Public ws1 As Worksheet

Sub Sample()
 If Not Application.Intersect(Range("B3:B100"), ActiveCell) Is Nothing Then
  With ActiveCell
   ws1.Cells(i, 2).Resize(, 3).Value = Array(.Offset(, -1).Value, .Value, .Offset(, 3).Value)
   ws1.Cells(i, 2).Offset(, 7).Value = .Offset(, 5).Value
  End With
  Set ws1 = Worksheets("history")
  i = ws1.Range("B65536").End(xlUp).Row + 1
  If i < 5 Then
   i = 5
  End If
  UserForm1.Show
 Else
  MsgBox "B3〜B100セルのいずれかをアクティブにしてください。"
 End If
End Sub

>そしてsaveするとき、作業当日の日付けをシートhistoryのセルk3に書き込みたい。

とりあえず、これには、対応していません。
別対応でできます。
1 hits

【54189】フォームを用いて値をシートに記入するには にしもり 08/2/28(木) 18:43 質問
【54195】Re:フォームを用いて値をシートに記入する... ハチ 08/2/29(金) 9:29 発言
【54196】Re:フォームを用いて値をシートに記入する... にしもり 08/2/29(金) 10:18 質問
【54197】Re:フォームを用いて値をシートに記入する... ハチ 08/2/29(金) 10:41 発言
【54198】Re:フォームを用いて値をシートに記入する... にしもり 08/2/29(金) 11:09 質問
【54200】Re:フォームを用いて値をシートに記入する... にしもり 08/2/29(金) 12:02 質問
【54201】Re:フォームを用いて値をシートに記入する... ハチ 08/2/29(金) 12:55 発言
【54213】Re:フォームを用いて値をシートに記入する... にしもり 08/2/29(金) 19:19 発言
【54232】Re:フォームを用いて値をシートに記入する... にしもり 08/3/1(土) 15:21 質問
【54233】Re:フォームを用いて値をシートに記入する... にしもり 08/3/1(土) 15:51 質問
【54243】Re:フォームを用いて値をシートに記入する... かみちゃん 08/3/2(日) 12:58 発言
【54244】Re:フォームを用いて値をシートに記入する... にしもり 08/3/2(日) 13:24 質問
【54245】Re:フォームを用いて値をシートに記入する... にしもり 08/3/2(日) 13:57 質問
【54249】Re:フォームを用いて値をシートに記入する... かみちゃん 08/3/2(日) 14:08 発言
【54246】Re:フォームを用いて値をシートに記入する... かみちゃん 08/3/2(日) 13:58 発言
【54247】Re:フォームを用いて値をシートに記入する... にしもり 08/3/2(日) 14:03 お礼
【54248】Re:フォームを用いて値をシートに記入する... かみちゃん 08/3/2(日) 14:07 発言
【54260】Re:フォームを用いて値をシートに記入する... かみちゃん 08/3/2(日) 16:13 発言
【54262】Re:フォームを用いて値をシートに記入する... にしもり 08/3/2(日) 16:26 質問
【54264】Re:フォームを用いて値をシートに記入する... かみちゃん 08/3/2(日) 16:31 発言
【54266】Re:フォームを用いて値をシートに記入する... にしもり 08/3/2(日) 16:44 お礼
【54268】Re:フォームを用いて値をシートに記入する... かみちゃん 08/3/2(日) 16:55 発言
【54276】Re:フォームを用いて値をシートに記入する... にしもり 08/3/2(日) 18:09 お礼

27789 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free