Excel VBA質問箱 IV

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

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


8148 / 13644 ツリー ←次へ | 前へ→

【34800】スクロールバーについて RL 06/2/13(月) 13:07 質問[未読]
【34821】Re:スクロールバーについて Ned 06/2/13(月) 19:30 発言[未読]
【34833】Re:スクロールバーについて RL 06/2/14(火) 13:19 質問[未読]
【34837】Re:スクロールバーについて Ned 06/2/14(火) 14:14 発言[未読]
【34843】Re:スクロールバーについて RL 06/2/14(火) 16:36 発言[未読]
【34844】Re:スクロールバーについて Ned 06/2/14(火) 17:14 発言[未読]
【34942】Re:スクロールバーについて RL 06/2/16(木) 15:29 お礼[未読]

【34800】スクロールバーについて
質問  RL  - 06/2/13(月) 13:07 -

引用なし
パスワード
   VBAでデータの抽出をしています。
その際に範囲を例えばA1:P35565にして抽出した後、スクロールバーを一番下まで
下げると、行ナンバーが35565まで下がりますよね?
それを、データがある範囲に戻す方法はありますか?

【34821】Re:スクロールバーについて
発言  Ned  - 06/2/13(月) 19:30 -

引用なし
パスワード
   こんにちは。今ひとつ要件が掴めていませんが、
どうやって抽出されていますか?
最初からデータがある分だけ抽出するわけにはいかないのですか?
もしくはSaveするとか?

【34833】Re:スクロールバーについて
質問  RL  - 06/2/14(火) 13:19 -

引用なし
パスワード
   Private Sub workbook_Open()
  UserForm1.Show
End Sub
を登録し、ファイルを開くとデータの更新をするようにしています。
元表は不定期に更新されるので、常に新しいデータを抽出できるように、
WB.ActiveSheet.Range("A4:G35565,K4:AE35565").Copy _
でコピーしています。
その為、エクセルの右端にあるスクロールバーが最終行の35565までスクロールされるようになってしまいました。
これを、データのある最終行までもってきたいのです。
データのある最終行から35565までを削除して上書き保存すると言うのをマクロで
やるのは不可能でしょうか?

解りにくい説明ですみません。

【34837】Re:スクロールバーについて
発言  Ned  - 06/2/14(火) 14:14 -

引用なし
パスワード
   >最初からデータがある分だけ抽出する
として、例えば、最終行をどう判定するかですけど、A列の最終行で判定していいのなら

Dim r As Long
With WB.ActiveSheet
  r = .Range("a65536").End(xlUp).Row
  .Range("A4:G" & r & ",K4:AE" & r).Copy_

End With

・・な感じでどうでしょう?

【34843】Re:スクロールバーについて
発言  RL  - 06/2/14(火) 16:36 -

引用なし
パスワード
   Nedさん、ありがとうございました。
元々、このコードはStatisさんにご教授頂き作成したコードで、
それを基に、下記のようにしました。

 Sub CommandButton1_Click()
 Dim FileName As String
 Dim WB As Workbook
 Dim MYPATH As String
 Worksheets("ユーザー管理表").Range("A4:AB65536").Clear
 MYPATH = "\\gggg\ggg\出荷一覧\一覧表\"

   strFileName = MYPATH & strFileName & "注文一覧表" & ".xls"

  If Dir(strFileName) <> "" Then
   Set WB = Workbooks.Open(strFileName)
   WB.ActiveSheet.Range("A4:G35565,K4:AE35565").Copy _
     ThisWorkbook.Worksheets("ユーザー一覧表").Range("A4")
   Windows("注文一覧表.xls").Activate
  ActiveWindow.Close
  Unload UserForm1
   Else
   MsgBox strFileName & "がありません"
  End If
End Sub
Private Sub CommandButton2_Click()
Unload UserForm1
MsgBox "データは更新されません"
End Sub

早速、頂いたコードをWB.ActiveSheet.Range("A4:G35565,K4:AE35565").Copy _
の部分に上書きしてみましたが、
.Range("A4:G" & r & ",K4:AE" & r).Copy_でエラーになってしまいました。
その他、Dim MYPATH As Stringのあとに
Dim r As Longを入れてみたりとか、自分で思いつく範囲で色々いじってみたのですが、
一考に解りません。
何かヒントでよいのでよろしくご教授下さい。

【34844】Re:スクロールバーについて
発言  Ned  - 06/2/14(火) 17:14 -

引用なし
パスワード
   >A列の最終行で判定していい
のですか?
修正を最低限にするのなら↓な感じでしょうか。。。

Private Sub CommandButton1_Click()
  Dim FileName As String
  Dim WB As Workbook
  Dim MYPATH As String
  Dim r As Long
  Worksheets("ユーザー管理表").Range("A4:AB65536").Clear
  MYPATH = "\\gggg\ggg\出荷一覧\一覧表\"
  strFileName = MYPATH & strFileName & "注文一覧表" & ".xls" 'これでいいのかわかりません
  If Dir(strFileName) <> "" Then
    Set WB = Workbooks.Open(strFileName)
    With WB.ActiveSheet
      r = .Range("a65536").End(xlUp).Row
      .Range("A4:G" & r & ",K4:AE" & r).Copy _
        ThisWorkbook.Worksheets("ユーザー一覧表").Range("A4")
    End With
    WB .Close
    Set WB = Nothing
    Unload UserForm1
  Else
    MsgBox strFileName & "がありません"
  End If
End Sub

【34942】Re:スクロールバーについて
お礼  RL  - 06/2/16(木) 15:29 -

引用なし
パスワード
   Nedさん、ありがとうございました。
頂いたコードを元にできました。
お返事が遅くなりましてすみませんでした<(_ _)>

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