Excel VBA質問箱 IV

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

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


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

【45104】指定した横行を縦列に貼り付けるには 新米T 06/12/12(火) 20:46 質問[未読]
【45106】Re:指定した横行を縦列に貼り付けるには Kein 06/12/12(火) 22:11 回答[未読]
【45111】Re:指定した横行を縦列に貼り付けるには 新米T 06/12/13(水) 6:46 お礼[未読]
【45124】Re:指定した横行を縦列に貼り付けるには Kein 06/12/13(水) 13:27 発言[未読]
【45139】Re:指定した横行を縦列に貼り付けるには 新米T 06/12/13(水) 16:18 お礼[未読]
【45107】Re:指定した横行を縦列に貼り付けるには ponpon 06/12/12(火) 22:22 発言[未読]
【45112】Re:指定した横行を縦列に貼り付けるには 新米T 06/12/13(水) 6:54 質問[未読]
【45138】Re:指定した横行を縦列に貼り付けるには ponpon 06/12/13(水) 16:16 発言[未読]

【45104】指定した横行を縦列に貼り付けるには
質問  新米T  - 06/12/12(火) 20:46 -

引用なし
パスワード
   最近度々御世話になり、大変助かっています。
今回の質問は、「シート1」でアクティブセルのある行の指定した(1:100)の範囲を「シート2」の指定した(CM1:CM100)に貼り付けたいのですが。どうしたらいいのでしょうか。
私なりに下記のように作ってみたのですが、CM列に延々と繰り返し書き込んでしまいます。
どうかよろしくお願いします。


Private Sub CommandButton1_Click()         

Dim PrintMenu As Long
Dim r As Range
Dim ws1 As Worksheet, ws2 As Worksheet
  Set ws1 = Worksheets("シート1")
  Set ws2 = Worksheets("シート2")

  With ws1
   ActiveCell.Activate       
    For Each r In Selection

      If r.Row > 1 And .Range("A65536").End(xlUp).Row >= r.Row Then
         ws1.Rows(r.Row).Select
         Selection.Copy
        ws2.Select
        Columns("CM:CM").Select         'CM列に貼り付け
        Selection.PasteSpecial :=xlPasteValues,Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
       
  End If
Next r  
End With 
End Sub

【45106】Re:指定した横行を縦列に貼り付けるには
回答  Kein  - 06/12/12(火) 22:11 -

引用なし
パスワード
   Private Sub CommandButton1_Click()
  Dim AR As Long
  Dim MyR As Range         
  Dim MyV As Variant

  If ActiveSheet.Name <> "シート1" Then Exit Sub
  AR = ActiveCell.Row
  Set MyR = Range(Cells(AR, 1), Cells(AR, 100))
  MyV = WorksheetFunction.Transpose(MyR.Value)
  With Worksheets("シート2")
   .Range("CM1:CM100").Value = MyV
   .Activate
  End With
  Set MyR = Nothing
End Sub

で、どうでしょーか ?

【45107】Re:指定した横行を縦列に貼り付けるには
発言  ponpon  - 06/12/12(火) 22:22 -

引用なし
パスワード
   ▼新米T さん:

>今回の質問は、「シート1」でアクティブセルのある行の指定した(1:100)の範囲を

ここがよくわかりません。 
「A列からCW列までをコピーして」ということですか?
ws1.Rows(r.Row).Copyとしているので、何列でもいいのですが。

>「シート2」の指定した(CM1:CM100)に貼り付けたいのですが。

ここが、一番わかりません。
複数行コピーするようですが、CM1:CM100に貼り付けた後、
その次は、CM101:CM200にその次はCM201:CM300…と貼り付けるのですか?
それとも、CN1:CN100、CO1:CO100…と貼り付けるのですか?

>私なりに下記のように作ってみたのですが、CM列に延々と繰り返し書き込んでしまいます。

コードを見ると、転記ミスで動かないようですが、CM列に延々と繰り返し書き込むようなコードになってます。

【45111】Re:指定した横行を縦列に貼り付けるには
お礼  新米T  - 06/12/13(水) 6:46 -

引用なし
パスワード
   ▼Kein さん:

返信が遅くなり申し訳ございません。
ご回答ありがとうございます。
ご指摘のようにテストして見たのですが、やっぱりCM1:CM100まで転記した後、CM131から同じ繰り返しとなってしまいます。
繰り返しをさせないようにするには、どうしたらいいのでしょう。

【45112】Re:指定した横行を縦列に貼り付けるには
質問  新米T  - 06/12/13(水) 6:54 -

引用なし
パスワード
   ▼ponpon さん:

>>今回の質問は、「シート1」でアクティブセルのある行の指定した(1:100)の範囲を
>
>ここがよくわかりません。 
>「A列からCW列までをコピーして」ということですか?
>ws1.Rows(r.Row).Copyとしているので、何列でもいいのですが。

指定した、アクティブセルは1行のみで、複数列ではありません。


>ここが、一番わかりません。
>複数行コピーするようですが、CM1:CM100に貼り付けた後、
>その次は、CM101:CM200にその次はCM201:CM300…と貼り付けるのですか?
>それとも、CN1:CN100、CO1:CO100…と貼り付けるのですか?
>

VBA初心者のため、あちこちの命令文を寄せ集めて作っているので、内容については余り分かりません。
コピーはあくまで、1行のみで貼り付けはCM1:CM100に貼り付けるだけでいいのですが。
是非ご教授ください。

【45124】Re:指定した横行を縦列に貼り付けるには
発言  Kein  - 06/12/13(水) 13:27 -

引用なし
パスワード
   そんなことはあり得ません。提示したコードをそのままテストしてますか ?
もし勝手に弄ったのなら、結果に責任はもてませんが。
いちおう現在使用しているコードを、ここへコピペしてみて下さい。

【45138】Re:指定した横行を縦列に貼り付けるには
発言  ponpon  - 06/12/13(水) 16:16 -

引用なし
パスワード
   Keinさんのコードで出来ると思うのですが、
それが違っているということは、皆さんにやりたいことが伝わっていない
ということではないでしょうか?

もう一度、現状のシートレイアウト
実行後のシートレイアウトを提示すると、有効なレスがつくと思います。

【45139】Re:指定した横行を縦列に貼り付けるには
お礼  新米T  - 06/12/13(水) 16:18 -

引用なし
パスワード
   ▼Kein さん:
>そんなことはあり得ません。提示したコードをそのままテストしてますか ?
>もし勝手に弄ったのなら、結果に責任はもてませんが。
>いちおう現在使用しているコードを、ここへコピペしてみて下さい。


私の入力ミスでした、再度入力後はうまくできました。ありがとうございました、

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