Excel VBA質問箱 IV

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

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


11490 / 13645 ツリー ←次へ | 前へ→

【15789】セルの最終行のクリアについて golgo28 04/7/6(火) 16:13 質問[未読]
【15793】Re:セルの最終行のクリアについて IROC 04/7/6(火) 16:28 回答[未読]
【15794】Re:セルの最終行のクリアについて golgo28 04/7/6(火) 17:00 質問[未読]
【15795】Re:セルの最終行のクリアについて IROC 04/7/6(火) 17:16 回答[未読]
【15809】Re:セルの最終行のクリアについて golgo28 04/7/7(水) 8:11 質問[未読]
【15810】Re:セルの最終行のクリアについて IROC 04/7/7(水) 8:42 回答[未読]
【15814】Re:セルの最終行のクリアについて golgo28 04/7/7(水) 10:07 質問[未読]
【15815】Re:セルの最終行のクリアについて IROC 04/7/7(水) 11:24 回答[未読]
【15816】Re:セルの最終行のクリアについて golgo28 04/7/7(水) 12:04 質問[未読]
【15817】Re:セルの最終行のクリアについて IROC 04/7/7(水) 13:32 回答[未読]
【15821】Re:セルの最終行のクリアについて golgo28 04/7/7(水) 17:20 お礼[未読]

【15789】セルの最終行のクリアについて
質問  golgo28  - 04/7/6(火) 16:13 -

引用なし
パスワード
   sheet1の一覧表からsheet2の表へ順に下へ転記するようにしました。
sheet2へ転記した最終行をsheet1上からクリアするにはどうしたらいいのでしょうか?

【15793】Re:セルの最終行のクリアについて
回答  IROC  - 04/7/6(火) 16:28 -

引用なし
パスワード
   >sheet1の一覧表からsheet2の表へ順に下へ転記するようにしました。

これは、どのよう行っているのですか?

【15794】Re:セルの最終行のクリアについて
質問  golgo28  - 04/7/6(火) 17:00 -

引用なし
パスワード
   ▼IROC さん:
>>sheet1の一覧表からsheet2の表へ順に下へ転記するようにしました。
>
>これは、どのよう行っているのですか?

以下のように記述してみましたが・・・

Private Sub CheckBox1_Click()

  If CheckBox1.Value = True Then
     
  Dim S1 As Worksheet, S2 As Worksheet
  Dim GYO As Long
 
  Set S1 = Worksheets("sheet1")
  Set S2 = Worksheets("sheet2")
  
  GYO = S2.Range("$A$65536").End(xlUp).Row
  If S2.Cells(GYO, 5).Value <> "" Then GYO = GYO + 1
  S2.Cells(GYO, 1).Resize(1, 12).Value = S1.Range("$B$4:$M$4").Value
  
  Else
 
   Worksheets("sheet2").Range("$A$65536").End(xlUp).ClearContents
   ここが、よく分かりません!!
  
  End If
  
End Sub

【15795】Re:セルの最終行のクリアについて
回答  IROC  - 04/7/6(火) 17:16 -

引用なし
パスワード
   チェックボックスを使っているようですが、
どのような仕様のマクロなのでしょうか?

【15809】Re:セルの最終行のクリアについて
質問  golgo28  - 04/7/7(水) 8:11 -

引用なし
パスワード
   ▼IROC さん:
>チェックボックスを使っているようですが、
>どのような仕様のマクロなのでしょうか?

sheet1に選択用の一覧表があり、チェックボックスを使用して必要な行のデータを
そのままsheet2の表に上から順に転記するようにしてあります。
チェックをオンにしたときに転記し、オフにした時にクリアするようにしたいのですが。
オンにしたときにはちゃんと転記できるのですが、オフにしたときにクリアできないので
困っています。

【15810】Re:セルの最終行のクリアについて
回答  IROC  - 04/7/7(水) 8:42 -

引用なし
パスワード
   sheet1、sheet2のレイアウトはどのようになっているか教えていただけませんか?

sheet2の最下行を A列で判別しているのに
E列の空白を調べている理由が良く分かりません。


Private Sub CheckBox1_Click()
Dim S1 As Worksheet, S2 As Worksheet

  Set S1 = Worksheets("Sheet1")
  Set S2 = Worksheets("Sheet2")
  
With S2
    If CheckBox1.Value = True Then
      S1.Range("B4:M4").Copy _
      Destination:=.Range("A65536").End(xlUp).Offset(1)
    Else
       .Range("A65536").End(xlUp).Resize(1, 12).ClearContents
    End If
    
End With
End Sub

【15814】Re:セルの最終行のクリアについて
質問  golgo28  - 04/7/7(水) 10:07 -

引用なし
パスワード
   If S2.Cells(GYO, 5).Value のところでしょうか?
(GYO, 1)の間違えでした。どうもすみません!!

Sheet1ですが
A列の4行から下に各行毎にチェックボックスを配置してあります。
B4:N4から下が一覧表になっていてデータが入力されています。

Sheet2ですが
A4:M4から下にSheet1と同じレイアウトで空白の一覧表を作成してあります。
Sheet1の必要な行のチェックボックスをオンにして選択したときに、SHeet2の表に上から順に転記するようにしたんです。
お分かりいただけますでしょうか?

【15815】Re:セルの最終行のクリアについて
回答  IROC  - 04/7/7(水) 11:24 -

引用なし
パスワード
   >Sheet1ですが
>A列の4行から下に各行毎にチェックボックスを配置してあります。
>B4:N4から下が一覧表になっていてデータが入力されています。

N ですか? 
M ですか?


>Sheet2ですが
>A4:M4から下にSheet1と同じレイアウトで空白の一覧表を作成してあります。
>Sheet1の必要な行のチェックボックスをオンにして選択したときに、
>SHeet2の表に上から順に転記するようにしたんです。
>お分かりいただけますでしょうか?

だいたい分かりましたが、構想(仕様)自体が適切に思えません。

まずシート上にチェックボックスをたくさんは位置するのは望ましくないです。
シートとコントロールツールボックスは相性が悪いので、
不具合の原因となります。

それと、各チェックボックスとsheet2に転記されたデータ(行)を
関連付けておかないと、適切なデータ(行)をクリアできないです。


チェックボックスは何個くらい配置するのでしょうか?

【15816】Re:セルの最終行のクリアについて
質問  golgo28  - 04/7/7(水) 12:04 -

引用なし
パスワード
   そうなんですか 知りませんでした。
チェックボックスの数は3,000個ぐらいになります。その中から必要に応じ取り出すのは
20〜30個くらいです。
他の方法を考えたほうがいいですかね。たとえばボタンを配置するとか・・・
今、試験的にIROCさんの書いて下さった通り書き直して実行してみたら何とか成功したみたいですが、数が多くなればエラーの可能性もありますかね?

Private Sub CheckBox1_Click()

  Dim S1 As Worksheet, S2 As Worksheet
  
   Set S1 = Worksheets("Sheet1")
   Set S2 = Worksheets("Sheet2")
 
  With S2
     If CheckBox1.Value = True Then
      S1.Range("B4:M4").Copy Destination:=S2.Range("A65536").End(xlUp).Offset(1)
     Else
      .Range("A65536").End(xlUp).Resize(1, 12).ClearContents
     End If
 
End With
End Sub

これで今は大丈夫みたいですけど・・・(5行ぐらいですけど)

【15817】Re:セルの最終行のクリアについて
回答  IROC  - 04/7/7(水) 13:32 -

引用なし
パスワード
   >チェックボックスの数は3,000個ぐらいになります。
絶対やめた方が良いです。
ファイルサイズも、とんでもなく増加します。

>他の方法を考えたほうがいいですかね。たとえばボタンを配置するとか・・・
ボタンでも同じです。
セルをチェックボックス代わりにして、
ダブルクリックすると "レ" が入力されるようにしたほうが良いです。


>今、試験的にIROCさんの書いて下さった通り書き直して
>実行してみたら何とか成功したみたいですが、
>数が多くなればエラーの可能性もありますかね?
マクロでエラーはないですけど、
Excelアプリケーション的に厳しいと思います。


>これで今は大丈夫みたいですけど・・・(5行ぐらいですけど)
マクロの動作として、問題ありませんか?

チェックボックスと、コピーされた行が関連付けされていないので、
削除時にSheet2の最下行が消えるので、
チェックボックスの意味がないと思いますが・・?

【15821】Re:セルの最終行のクリアについて
お礼  golgo28  - 04/7/7(水) 17:20 -

引用なし
パスワード
   ぼくもサイズの増加は恐れていました。
IROCさんのおっしゃる通りです。
セルを直接ダブルクリックする方法も含めて再度検討し直してみます。
いずれにしても、今の方法はやめた方がよさそうなので・・・

大変ご丁寧にご教授くださいまして、ありがとうございました。
ずいぶんと勉強させていただきました。

また、お世話になると思いますが、その節はよろしくお願い致します。

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