Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
1行飛ばしでリンクを張りたい
投稿日時: 20/06/08 13:30:41
投稿者: 案山子

皆様、お世話になっております。
先日教えていただきました、別シートからセル内の値をリンクで貼りたいとお願いして、
教えていただいたのですが、それを利用して一行飛ばしで一部のリンクを張ろうとしたの
ですが、上手くいきません。

Sub リンク書き込み()
    Dim myRng As Range
    '↓書き込み先の指定値'
    Set myRng = Worksheets("Sheet1").Range("A30:A470,E30:E470,J30:J470")
    '↓読み込み先の指定値'
    myRng.FormulaR1C1 = "=Sheet2!RC"
End Sub

こちらを、以下のようにしてみました。
Sub リンク書き込み()
    Dim myRng As Range
    '↓書き込み先の指定値'
    Set myRng = Worksheets("Sheet1").Range("A30:A470,E30:E470,J30:J470")
    '↓読み込み先の指定値'
    myRng.FormulaR1C1 = "=Sheet2!R[-31]C"
End Sub

行は別なVBAで開けています。
どうぞよろしくお願いいたします。

回答
投稿日時: 20/06/08 14:48:18
投稿者: WinArrow
投稿者のウェブサイトに移動

>myRng.FormulaR1C1 = "=Sheet2!RC"
   
のコードは
A30セルには
=Sheet2!A30
A31セルには
=Sheet2!A31
という数式が入ります。
  
 
 >一行飛ばしで
ということの対応と思いますが
> myRng.FormulaR1C1 = "=Sheet2!R[-31]C"
A30セルの場合は
30-31の答えは、-1ですから、シートからはみ出します。結果エラーになる
 
 >一行飛ばしで
 をもう少し詳しく(例を示して)説明しましょう。
 
それから、相対参照について、勉強しましょうね・・・

投稿日時: 20/06/08 14:49:44
投稿者: 案山子

ご回答ありがとうございます。
Steet2からSteet1へセル内の値をA・E・Jから読み込みリンクします。
次に余分な0や計を別なコードで消して、空行を削除して下記のような表にします。
  
商品名 単位  備考
商品A  個  この商品は
商品B  個  この商品は
商品C  本  この商品は
商品D  本  この商品は
商品E  個  この商品は
  
この状態から一行空けて、備考を下に持っていきたいのです。
下記のような表を作成したいのです。
商品名 単位  
商品A  個  
この商品は
商品B  個  
この商品は
商品C  本  
この商品は
商品D  本  
この商品は
商品E  個  
この商品は
  
毎回書式が変わるので、基本的に手作業の短縮目的なので数値を変えて対応できると有難いです。
よろしくお願いいたします。

回答
投稿日時: 20/06/08 16:38:24
投稿者: WinArrow
投稿者のウェブサイトに移動

>下記のような表を作成したいのです。
この文章としてはわかりますが、
Sheet1のセルレイアウトが和解ません。
セルアドレスの対応で瀬梅うして貰えませんか・?
 
その内容に依存しますが、
> Set myRng = Worksheets("Sheet1").Range("A30:A470,E30:E470,J30:J470")
が無駄になるかも?

投稿日時: 20/06/08 16:43:13
投稿者: 案山子

ご回答ありがとうございます。
空行セルを無視するで対応ができたので、操作をマクロ記憶して作りました。