Excel VBA質問箱 IV

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

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


52266 / 76736 ←次へ | 前へ→

【29311】Re:任意の行のレコードをユーザフォーム...
発言  Lion  - 05/9/30(金) 12:12 -

引用なし
パスワード
   こんにちは
うくれれさん
こんばんはかな?

登録・変更・削除の
下記コードを試してみてください。

ボタン等が複雑そうなので、TextBox 1・2・3だけで作成しています。
TextBox等うくれれさんの環境に合わせて下さいね。

>myLID = ListBox1.ListIndex + 4
なので 3行目に見だし、4行目からデータとしています。
また見出しはA列からにしています。
たぶん、最後の列がCXになるのでB列から見出しがあるのだと思いますが・・・
B列から見出しがあるのなら、私が思っているボタン等の配置は合っていると思うのですが・・・

登録・変更・削除があるので
Private Sub S_LIST()


End Sub
を追加しました。

'----------------------------------
Option Explicit
Dim myCHE As Boolean
'----------------------------------
Private Sub UserForm_Initialize()
'-----フォーム初期設定-----
Dim f As Long

With ListBox1
  .ColumnCount = 3
  .ColumnWidths = "80;80;50"
End With

Call S_LIST   'リスト表示

For f = 1 To 3
  Controls("TEXTBOX" & f).Value = ""
Next

End Sub
'----------------------------------
Private Sub ListBox1_Click()
'-----リスト選択-----
Dim f As Long
Dim myNAME As String
Dim myLID As Long

If myCHE = True Then
  Exit Sub
End If

myNAME = ListBox1.Column(0)
myLID = ListBox1.ListIndex + 4

For f = 1 To 3
  Controls("TEXTBOX" & f).Value = Worksheets("Sheet1").Cells(myLID, f).Value
Next

End Sub
'----------------------------------
Private Sub S_LIST()
'-----リスト表示-----
Dim LASROW1 As Long
Dim myDRange1 As String

LASROW1 = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
myDRange1 = "Sheet1!A4:C" & LASROW1
ListBox1.RowSource = myDRange1

If Worksheets("Sheet1").Range("A4").Value = "" Then
  ListBox1.RowSource = ""
End If

End Sub
'----------------------------------
Private Sub CommandButton1_Click()
'-----変更----
Dim f As Long
Dim myLID As Long

'MsgBoxは必要なければ削除してください。
If MsgBox("変更しますか? ", vbYesNo, "うくれれ") <> vbYes Then
  Exit Sub
End If

myLID = ListBox1.ListIndex + 4
myCHE = True

For f = 1 To 3
  Worksheets("Sheet1").Cells(myLID, f).Value = Controls("TEXTBOX" & f).Value
Next

myCHE = False

End Sub
'----------------------------------
Private Sub CommandButton2_Click()
'-----リスト削除-----
Dim myLID As Long
Dim f As Long

'-リストを選択していないと終了
'MsgBoxは必要なければ削除してください。
If ListBox1.ListIndex = -1 Then
  'MsgBox "削除するリストを選択して下さい。 ", vbOKOnly, "うくれれ"
  Exit Sub
End If

'-削除するかの確認メッセージです。必要なければ削除してください。
'-有ったほうが安全のような気がしますが。
If MsgBox("削除しますか? ", vbYesNo, "うくれれ") <> vbYes Then
  Exit Sub
End If

myLID = ListBox1.ListIndex + 4

With Worksheets("Sheet1")
  .Range("A" & CStr(myLID), .Range("C" & CStr(myLID))).Delete Shift:=xlUp
End With

Call S_LIST 'リスト表示

End Sub
'----------------------------------
Private Sub CommandButton3_Click()
'-----登録-----
Dim myTAR As Range
Dim f As Long

'MsgBoxは必要なければ削除してください。
If MsgBox("登録しますか? ", vbYesNo, "うくれれ") <> vbYes Then
  Exit Sub
End If

Set myTAR = Worksheets("Sheet1").Range("A65536").End(xlUp)

With myTAR
  For f = 1 To 3
    .Offset(1, f - 1).Value = Controls("TEXTBOX" & f).Value
  Next
End With

Set myTAR = Nothing

Call S_LIST 'リスト表示

End Sub
'----------------------------------
>更には、オートフィルタでデータ抽出できるようにし、
>指定した行のデータを別シートに作成した「帳票」に貼り付けて印刷、
>というところまで作りたいと考えています。

方法は別として可能だと思います。
私に分かる範囲ならお答えできると思います。
分からない時はごめんなさい・・・

0 hits

【29162】任意の行のレコードをユーザフォームへ貼付け うくれれ 05/9/27(火) 0:01 質問
【29173】Re:任意の行のレコードをユーザフォームへ... Lion 05/9/27(火) 10:29 発言
【29220】Re:任意の行のレコードをユーザフォームへ... うくれれ 05/9/27(火) 21:54 お礼
【29221】Re:任意の行のレコードをユーザフォームへ... うくれれ 05/9/27(火) 22:23 質問
【29224】Re:任意の行のレコードをユーザフォーム... Lion 05/9/27(火) 23:53 発言
【29247】Re:任意の行のレコードをユーザフォーム... うくれれ 05/9/29(木) 1:36 質問
【29253】Re:任意の行のレコードをユーザフォーム... Lion 05/9/29(木) 10:23 発言
【29299】Re:任意の行のレコードをユーザフォーム... うくれれ 05/9/30(金) 1:49 質問
【29311】Re:任意の行のレコードをユーザフォーム... Lion 05/9/30(金) 12:12 発言
【29352】Re:任意の行のレコードをユーザフォーム... うくれれ 05/10/2(日) 2:00 質問
【29354】Re:任意の行のレコードをユーザフォーム... Lion 05/10/2(日) 18:33 発言
【29465】Re:任意の行のレコードをユーザフォーム... うくれれ 05/10/5(水) 22:47 お礼
【29477】Re:任意の行のレコードをユーザフォーム... LION 05/10/6(木) 0:50 発言
【29478】Re:任意の行のレコードをユーザフォーム... LION 05/10/6(木) 0:58 発言
【29639】Re:任意の行のレコードをユーザフォーム... うくれれ 05/10/10(月) 1:46 質問

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