Excel VBA質問箱 IV

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

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


10499 / 13646 ツリー ←次へ | 前へ→

【21357】シートを制御する方法教えて下さい。 まつ君 05/1/19(水) 22:31 質問[未読]
【21359】Re:シートを制御する方法教えて下さい。 IROC 05/1/19(水) 22:37 回答[未読]
【21361】Re:シートを制御する方法教えて下さい。 まつ君 05/1/19(水) 23:19 質問[未読]
【21367】Re:シートを制御する方法教えて下さい。 りすりす 05/1/20(木) 2:01 回答[未読]
【21415】Re:シートを制御する方法教えて下さい。 まつ君 05/1/20(木) 20:37 質問[未読]
【21419】Re:シートを制御する方法教えて下さい。 りすりす 05/1/20(木) 21:51 回答[未読]
【21487】Re:シートを制御する方法教えて下さい。 まつ君 05/1/21(金) 20:35 お礼[未読]

【21357】シートを制御する方法教えて下さい。
質問  まつ君 E-MAIL  - 05/1/19(水) 22:31 -

引用なし
パスワード
   シートの順番を変えたり、シートの名前を変えようとした場合、メッセージを
出すようにしたいのですが、ご教授お願いいたします。

【21359】Re:シートを制御する方法教えて下さい。
回答  IROC  - 05/1/19(水) 22:37 -

引用なし
パスワード
   ブックの保護では駄目なのですか?

【21361】Re:シートを制御する方法教えて下さい。
質問  まつ君 E-MAIL  - 05/1/19(水) 23:19 -

引用なし
パスワード
   ▼IROC さん:
>ブックの保護では駄目なのですか?
普通はそう考えますよね。
すみません。1つ教えてください。
ブックのシート構成が”基準”、”1工程”、”2工程”、”3工程”、”全工程”とあります。
そこでシートの1工程から順番に4工程のシートまでを順番に選択するところまでをどう記述するのか割りません。

subシート内容のコピー()
sheets("1工程”).range("**:**").select
selection.copy
sheets("全工程").select
range("a65536").end(xlup).select
activesheet.paste
同様にシート2工程・・・4工程とシートを切り替えます。
その後のプログラムは同じです。
シートネームを変数を使ってシートを切り替えるようにしたいのですが・・・

【21367】Re:シートを制御する方法教えて下さい。
回答  りすりす  - 05/1/20(木) 2:01 -

引用なし
パスワード
          ▼まつ君 さん:
>▼IROC さん:
>>ブックの保護では駄目なのですか?
>普通はそう考えますよね。


Protect で制御可能

ThisWorkbook.Protect

で動的に制御するといいです

Sheet3をブロックする場合。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Dim b As Boolean

 b = (StrComp(Sh.Name, "Sheet3") = 0)
 ThisWorkbook.Protect Structure:=b
End Sub


[XL] ワークブック内のシートを並べ替える方法
http://support.microsoft.com/default.aspx?scid=kb;ja;812386


>すみません。1つ教えてください。
>ブックのシート構成が”基準”、”1工程”、”2工程”、”3工程”、”全工程”とあります。
>そこでシートの1工程から順番に4工程のシートまでを順番に選択するところまでをどう記述するのか割りません。
>
>subシート内容のコピー()
>sheets("1工程”).range("**:**").select
>selection.copy
>sheets("全工程").select
>range("a65536").end(xlup).select
>activesheet.paste
>同様にシート2工程・・・4工程とシートを切り替えます。
>その後のプログラムは同じです。
>シートネームを変数を使ってシートを切り替えるようにしたいのですが・・・

最初から4つと決めているなら

Dim i As Long
Dim w As Worksheet

For i = 1 To 4
  If i = 1 Then Set w = Sheets("1工程")
  If i = 2 Then Set w = Sheets("2工程")
  If i = 3 Then Set w = Sheets("3工程")
  If i = 4 Then Set w = Sheets("4工程")
  ここに処理

Next i

【21415】Re:シートを制御する方法教えて下さい。
質問  まつ君 E-MAIL  - 05/1/20(木) 20:37 -

引用なし
パスワード
   ▼りすりす さん:
ご返答ありがとうございます。
テストしてみましたがうまくいきません
なにがいけないのでしょうか

Sub テスト()
Dim i As Long
Dim w As Worksheet

For i = 1 To 4

  If i = 1 Then Set w = Sheets("1工程")
  If i = 2 Then Set w = Sheets("2工程")
  If i = 3 Then Set w = Sheets("3工程")
  If i = 4 Then Set w = Sheets("4工程")
Sheets(i).Select
  Range("A1").Select
  Selection.Copy
  Sheets("1").Select
  Range("a65536").End(xlUp).Select
  ActiveSheet.Paste

Next i

End Sub

【21419】Re:シートを制御する方法教えて下さい。
回答  りすりす  - 05/1/20(木) 21:51 -

引用なし
パスワード
   ▼まつ君 さん:
>▼りすりす さん:
>ご返答ありがとうございます。
>テストしてみましたがうまくいきません
>なにがいけないのでしょうか
>
>Sub テスト()
>Dim i As Long
>Dim w As Worksheet
>
>For i = 1 To 4
>
>  If i = 1 Then Set w = Sheets("1工程")
>  If i = 2 Then Set w = Sheets("2工程")
>  If i = 3 Then Set w = Sheets("3工程")
>  If i = 4 Then Set w = Sheets("4工程")
> Sheets(i).Select
>  Range("A1").Select
>  Selection.Copy
>  Sheets("1").Select
>  Range("a65536").End(xlUp).Select
>  ActiveSheet.Paste
>
>Next i
>
>End Sub


上の文を解読するとこんな感じですけど
こんなのでいいのですか?

1への出力をどんどんさげていくには、
End(xlUp)で得たとき空白でないなら一個下のセルをって感じに変えないと
同じところに上書きされますよ


Dim i As Long
Dim w As Worksheet

For i = 1 To 4

  If i = 1 Then Set w = Sheets("1工程")
  If i = 2 Then Set w = Sheets("2工程")
  If i = 3 Then Set w = Sheets("3工程")
  If i = 4 Then Set w = Sheets("4工程")
  w.Range("A1").Copy
  w.Paste Destination:=Sheets("1").Range("a65536").End(xlUp)
' Sheets("1").Range("a65536").End(xlUp).PasteSpecial
Next i

【21487】Re:シートを制御する方法教えて下さい。
お礼  まつ君 E-MAIL  - 05/1/21(金) 20:35 -

引用なし
パスワード
   ▼りすりす さん:
ごめんなさい、出来ました。
offsetを入れて解決しました。

Range("a65536").End(xlUp).Offset(1, 0).Select
              ↑ここにいれました。

どうもありがとうございました。
今後ともよろしくお願いします。

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