Excel VBA質問箱 IV

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

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


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

【78084】VBAで「リンク貼り付け」をしたい かな 16/4/1(金) 18:22 質問[未読]
【78085】Re:VBAで「リンク貼り付け」をしたい β 16/4/1(金) 18:52 発言[未読]
【78086】Re:VBAで「リンク貼り付け」をしたい かな 16/4/1(金) 19:08 質問[未読]
【78090】Re:VBAで「リンク貼り付け」をしたい β 16/4/2(土) 11:19 発言[未読]
【78089】Re:VBAで「リンク貼り付け」をしたい マナ 16/4/2(土) 10:43 発言[未読]
【78099】Re:VBAで「リンク貼り付け」をしたい かな 16/4/4(月) 10:37 お礼[未読]

【78084】VBAで「リンク貼り付け」をしたい
質問  かな  - 16/4/1(金) 18:22 -

引用なし
パスワード
   VBAで困っているところがあるので質問します。

下記VBAを検索で見つけ、使用したいと思っているのですが、
これを「リンク貼り付け」に変えるにはどうしたら良いでしょうか?

よろしくお願いします。


Sub シート分け()
 Dim h As Range
 On Error GoTo errhandle
 Worksheets("一覧表").Select

'転記する
 For Each h In Range("H7:H" & Range("H65536").End(xlUp).Row)
  h.EntireRow.Copy Worksheets(h.Value).Range("A65536").End(xlUp).Offset(1)
 Next
 Exit Sub

errhandle:
'支店名シートを新調する
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = h.Value
 Worksheets("一覧表").Range("1:1").Copy Range("A3")
 Resume
End Sub

【78085】Re:VBAで「リンク貼り付け」をしたい
発言  β  - 16/4/1(金) 18:52 -

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

先ほどは、「値貼り付け」だったので、回答案をメモっていたら、取り消されて
「リンク貼り付け」になりましたね。

ある行をコピー ---> 別の行のA列を選択して 貼り付けで リンク貼り付け。
これをマクロ記録すると、お望みのコード雛形が生成されますよ。

【78086】Re:VBAで「リンク貼り付け」をしたい
質問  かな  - 16/4/1(金) 19:08 -

引用なし
パスワード
   ご回答、ありがとうございます。
質問内容を変えてしまって、大変すみませんでした。

考えていたところ、私が必要としていたのが「リンク貼り付け」だったので。

ご教授いただいたコードの雛形は、
「ActiveSheet.Paste Link:=True」なのかと思いますが、
これを今のコードの中でどこを変更すればよいのかが分かりません。

初心者ですみません。

【78089】Re:VBAで「リンク貼り付け」をしたい
発言  マナ  - 16/4/2(土) 10:43 -

引用なし
パスワード
   ▼かな さん:
毎回、シートを作り直しています。
シート名が不適切でエラーとなる場合もあるかもしれません。

Sub シート分け2()
  Dim ws As Worksheet
  Dim n As Long
   Dim h As Range
  
  With Worksheets("一覧表")
    Application.DisplayAlerts = False
    For Each ws In Worksheets
      If ws.Name <> .Name Then ws.Delete
    Next
    Application.DisplayAlerts = True
    
    n = .Range("A1").CurrentRegion.Columns.Count
    
    '転記する
    For Each h In .Range("H7:H" & .Range("H65536").End(xlUp).Row)
      Set ws = Nothing
      On Error Resume Next
      Set ws = Worksheets(h.Value)
      On Error GoTo 0
      If ws Is Nothing Then
        '支店名シートを新調する
        Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))
        ws.Name = h.Value
        .Rows(1).Resize(, n).Copy ws.Range("A3")
      End If
      ws.Range("H65536").End(xlUp).EntireRow.Resize(, n).Offset(1).Formula = _
        "=" & h.EntireRow.Range("A1").Address(False, False, , True)
      
    Next
  End With

End Sub

【78090】Re:VBAで「リンク貼り付け」をしたい
発言  β  - 16/4/2(土) 11:19 -

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

>これを今のコードの中でどこを変更すればよいのかが分かりません。

一例です。
操作のリンク貼り付けも同様になりますが参照セルが空白の場合は 0 になります。
(空白なら空白 という式にすることもできますが、とりあえず)

Sub シート分け3()
  Const LISTNAME As String = "一覧表"
  Dim h As Range
  Dim cols As Long
  Dim tSh As Worksheet
  
  With Sheets(LISTNAME)
    cols = .Range("A1", .UsedRange).Columns.Count
    For Each h In .Range("H7", .Range("H" & .Rows.Count).End(xlUp))
      If Not IsObject(Evaluate("'" & h.Value & "'!A1")) Then  'シート有無チェック
        Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = h.Value
        .Range("1:1").Copy Range("A3")
      End If
      With Sheets(h.Value)
        .Range("A" & .Rows.Count).End(xlUp).Offset(1).Resize(, cols).FormulaR1C1 = "='" & LISTNAME & "'!R" & h.Row & "C"
      End With
    Next
  End With

End Sub

【78099】Re:VBAで「リンク貼り付け」をしたい
お礼  かな  - 16/4/4(月) 10:37 -

引用なし
パスワード
   βさん、マナさん、ご回答ありがとうございます。

問題を解決することが出来ました。
非常に助かりました。

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