Excel VBA質問箱 IV

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

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


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

【25323】範囲指定について うっち 05/5/28(土) 16:09 質問[未読]
【25324】Re:範囲指定について kobasan 05/5/28(土) 17:00 回答[未読]
【25325】Re:範囲指定について うっち 05/5/28(土) 18:09 質問[未読]
【25327】Re:範囲指定について kobasan 05/5/28(土) 18:29 回答[未読]
【25331】Re:範囲指定について kobasan 05/5/28(土) 19:42 回答[未読]
【25332】Re:範囲指定について うっち 05/5/28(土) 20:00 お礼[未読]

【25323】範囲指定について
質問  うっち  - 05/5/28(土) 16:09 -

引用なし
パスワード
   よろしくお願いします。下のマクロで、Range("A" & a, "N" & a).Select
部分で、A列〜N列とP列〜R列を一緒に選択したいのですが、カンマ、コロンなど試しましたがうまく動作しません。こちらのサイトで下記の方法を見つけて試しましたが、O列にP列の値がずれて張り付きます。O列は関数が入っていて上書きしたくありません。
Union(Range(Cells(a, 1), Cells(a, 14)), Range(Cells(a, 16), Cells(a, 17))).Select
どのように書けば良いか教えて頂けないでしょうか?

Sub TEST()
Dim r As Long, a As Integer
Dim 名 As String

Application.ScreenUpdating = False

r = ActiveCell.Column
名 = ActiveCell.Value

mybtn = MsgBox(("名前 " & 名 & " を出力します"), 1)
 If mybtn = 2 Then
 Exit Sub
 Else
 End If
For a = 8 To Cells(65536, 1).End(xlUp).Row
Cells(a, r).Select
If ActiveCell.Value = "1" Then
Range("A" & a, "N" & a).Select
Selection.Copy
Windows(名 & ".xls").Activate
Worksheets("名簿").Select
Cells(65536, 1).End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
Windows("名簿.xls").Activate
Else
End If
Next
Windows(名 & ".xls").Activate

Application.ScreenUpdating = True

End Sub

【25324】Re:範囲指定について
回答  kobasan  - 05/5/28(土) 17:00 -

引用なし
パスワード
   ▼うっち さん 今日は

>よろしくお願いします。下のマクロで、Range("A" & a, "N" & a).Select
>部分で、A列〜N列とP列〜R列を一緒に選択したいのですが、カンマ、コロンなど試しましたがうまく動作しません。こちらのサイトで下記の方法を見つけて試しましたが、O列にP列の値がずれて張り付きます。O列は関数が入っていて上書きしたくありません。

'この例で分かってください。
Sub test1()
Dim c As Range, MyRange As Range
  'Union(Range(Cells(a, 1), Cells(a, 14)), Range(Cells(a, 16), Cells(a, 17))).Select
  '↓
   Set MyRange = Union(Range(Cells(1, 1), Cells(1, 14)), Range(Cells(1, 16), Cells(1, 17)))
   MyRange.Select
End Sub

Sub test2()
  'Range("A" & a, "N" & a).Select
  '↓
  Range("A1:N1,P1:R1").Select
End Sub

【25325】Re:範囲指定について
質問  うっち  - 05/5/28(土) 18:09 -

引用なし
パスワード
   ▼kobasan さん:
ご回答ありがとうございます。行方向を変数にしたいのですが、やはりずれてしまいました。

うっち さん 今日は
>
>>よろしくお願いします。下のマクロで、Range("A" & a, "N" & a).Select
>>部分で、A列〜N列とP列〜R列を一緒に選択したいのですが、カンマ、コロンなど試しましたがうまく動作しません。こちらのサイトで下記の方法を見つけて試しましたが、O列にP列の値がずれて張り付きます。O列は関数が入っていて上書きしたくありません。
>
>'この例で分かってください。
>Sub test1()
>Dim c As Range, MyRange As Range
>  'Union(Range(Cells(a, 1), Cells(a, 14)), Range(Cells(a, 16), Cells(a, 17))).Select
>  '↓
>   Set MyRange = Union(Range(Cells(1, 1), Cells(1, 14)), Range(Cells(1, 16), Cells(1, 17)))
>   MyRange.Select
>End Sub
>
>Sub test2()
>  'Range("A" & a, "N" & a).Select
>  '↓
>  Range("A1:N1,P1:R1").Select
>End Sub

【25327】Re:範囲指定について
回答  kobasan  - 05/5/28(土) 18:29 -

引用なし
パスワード
   ▼うっち さん 今晩は。
こんな感じですか。

Sub test1()
Dim c As Range, MyRange As Range
  'Union(Range(Cells(a, 1), Cells(a, 14)), Range(Cells(a, 16), Cells(a, 17))).Select
  '↓
  行 = 10
   Set MyRange = Union(Range(Cells(行, 1), Cells(行, 14)), Range(Cells(行, 16), Cells(行, 17)))
   MyRange.Select
End Sub

Sub test2()
  'Range("A" & a, "N" & a).Select
  '↓
  行 = 10
  addrr = "A" & 行 & ":N" & 行 & ",P" & 行 & ":R" & 行
  Range(addrr).Select
End Sub

【25331】Re:範囲指定について
回答  kobasan  - 05/5/28(土) 19:42 -

引用なし
パスワード
   ▼うっち さん 今晩は

>ご回答ありがとうございます。行方向を変数にしたいのですが、やはりずれてしまいました。
>

離れている列は詰められて貼り付けされる原因が分かりました。

「A列〜N列とP列〜R列を一緒に選択したいのですが」これでコピー貼付をやると、
離れている列は詰められて貼り付けされます。従って

If ActiveCell.Value = "1" Then
Range("A" & a, "N" & a).Select
Selection.Copy
Windows(名 & ".xls").Activate
Worksheets("名簿").Select
Cells(65536, 1).End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False

の部分は、次のようにcopy pasteを2回に分けてやるしかないです。

    If Cells(行, r).Value = "1" Then
      '
      Set LastC = Sheets(2).Cells(65536, 1).End(xlUp)
      addrr = "A" & 行 & ":N" & 行
      Range(addrr).Copy
      'Windows("book2.xls").Activate
      LastC.Offset(1).PasteSpecial Paste:=xlPasteValues
      '
      addrr = "P" & 行 & ":R" & 行
      Range(addrr).Copy
      'Windows("book2.xls").Activate
      LastC.Offset(1, 15).PasteSpecial Paste:=xlPasteValues
        
    End If

【25332】Re:範囲指定について
お礼  うっち  - 05/5/28(土) 20:00 -

引用なし
パスワード
   ▼kobasan さん:いろいろありがとうございました。2度に分けて貼り付ける方法でうまくいきました。

>▼うっち さん 今晩は
>
>>ご回答ありがとうございます。行方向を変数にしたいのですが、やはりずれてしまいました。
>>
>
>離れている列は詰められて貼り付けされる原因が分かりました。
>
>「A列〜N列とP列〜R列を一緒に選択したいのですが」これでコピー貼付をやると、
>離れている列は詰められて貼り付けされます。従って
>
>If ActiveCell.Value = "1" Then
>Range("A" & a, "N" & a).Select
>Selection.Copy
>Windows(名 & ".xls").Activate
>Worksheets("名簿").Select
>Cells(65536, 1).End(xlUp).Offset(1).Select
>Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
>  :=False, Transpose:=False
>
>の部分は、次のようにcopy pasteを2回に分けてやるしかないです。
>
>    If Cells(行, r).Value = "1" Then
>      '
>      Set LastC = Sheets(2).Cells(65536, 1).End(xlUp)
>      addrr = "A" & 行 & ":N" & 行
>      Range(addrr).Copy
>      'Windows("book2.xls").Activate
>      LastC.Offset(1).PasteSpecial Paste:=xlPasteValues
>      '
>      addrr = "P" & 行 & ":R" & 行
>      Range(addrr).Copy
>      'Windows("book2.xls").Activate
>      LastC.Offset(1, 15).PasteSpecial Paste:=xlPasteValues
>        
>    End If

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