• 締切済み

セルの属性を変えずに

セル間で値を渡すには、どうしたらよいでしょうか。  A列  B列   C列 1    ○1   ○2 2 ●1 3 ●2 A列2行に、http://×××.html(ハイパーリンクの有り) A列3行に、http://×××.html(ハイパーリンクの有り) B列1行、B列2行に移したいのです。 Cells(2, 1) = Cells(1, 2) Cells(3, 1) = Cells(1, 3) このように記述すると、ハイパーリンクが外れてしまうのです。 ハイパーリンク有りのまま、値を移すにはどうすればよいでしょうか? アドバイスをお願いいたします。

みんなの回答

  • uissst
  • ベストアンサー率41% (7/17)
回答No.5

要素を抽出して加えてあげればいいのですが 例:シート1のセルA1のハイパーリンクをシート1のA2に設定する Worksheets(1).Hyperlinks.Add Cells(2, 1), Worksheets(1).Range("a1").Hyperlinks.Item(1).Address 当然文字列は設定されませんのであらかじめ設定しておくことが必要です。 それとおそらくハイパーリンクが設定されていないセルを参照するとエラーを起こすと思いますのでエラー処理してあげるか、事前にハイパーリンクがあるか判定してあげる必要があります。 あと蛇足ですがNo2さんの回答の B1に=HYPERLINK(A2) C1に=HYPERLINK(A3) は参照設定ですのでマクロでは使用できないと思います。

yokoneco
質問者

お礼

感激です☆ ありがとうごいます。早速ためします。

  • NCU
  • ベストアンサー率10% (32/318)
回答No.4

Excel2002, Win XPで試したところ、セルの値は変わりますが、ハイパーリンクは生きています。

yokoneco
質問者

補足

EXCEL2003なのですが、記述の仕方が異なるのでしょうか。ハイパーリンクが死んでいます。

回答No.3

見当違いかも知れませんが、コピーするだけなら コピー→相手セルで右クリック→形式を選択して貼り付け→ 罫線を除くすべてを選択してOKでどうでしょうか?

yokoneco
質問者

補足

どうもありがとうございます。 複数行あるため、マクロに実行させたいと考えています。

回答No.2

B1に=HYPERLINK(A2) C1に=HYPERLINK(A3) と入力すればハイパーリンクごとコピーできますよ。

yokoneco
質問者

補足

cells(○、○)をHYPERLINKrange("A" & 変数)にすればよいということでしょうか。 マクロを実行するとHYPERLINKのところでとまり、SUB、Functionが定義されていませんと表示されます。なぜでしょうか。

  • uissst
  • ベストアンサー率41% (7/17)
回答No.1

動作は遅くなりますがコピーじゃだめでしょうか 例セルa1をa2に Cells(1, 1).Copy Destination:=Cells(2, 1)

yokoneco
質問者

補足

どうもありがとうございます。 やはり、コピーしか方法はないのでしょうか。

関連するQ&A

  • VBA 固定セルから可変セルへのハイパーリンク

    VBA、マクロの記述方法を教えてください ハイパーリンク元:ワークシート1のA1セル ハイパーリンク先:ワークシート2のcells(リンク先セルの行番号,リンク先セルの列番号) リンク先セルの行番号、リンク先セルの列番号はいずれもINTEGERの変数名、でハイパーリンクを張ろうとする時点(段階)でマクロによって値が定義(付与)されているもの、とします

  • エクセルマクロで指定したセルの値を表示変更し転記

    エクセルマクロで指定したセルの値を表示変更して指定したセルに転記したい セルA列に書式が標準で 20101117と入っています。 これをB列にセルの値も表示も共に11/27としたいです。 (セルの値は2010/11/17でセルの表示は11/27ではまずいです。) A列にデーターがあるまで繰り返したいです。 行数は作業毎で常に違います。 以下の記述では出来ませんでした。 よろしくお願いします。 Sub 日付() 行 = 2 Do If Cells(行, 1).Value = "" Then Exit Do Cells(行, 2).Value = Mid(行, 1,5,2) &"/"& RIGHT(行, 1,2) 行 = 行 + 1 Loop End Sub

  • エクセルのセルの並び替え

    A列の1~100行まで値(数字)が入力されていると仮定して、 A列の100行目のセルの値をB列の1行目のセルへ、 A列の99行目のセルの値をB列の2行目のセルへ、 というように並び替える方法を教えていただけないでしょうか? また、この時の各セルの値の大きさは関係ないです。 よろしくお願いします。

  • 空欄セルに順番に値を入力したいのですが

    すみません、誰か教えて頂けませんでしょうか? A列に値がありB列に所どころ空欄セルがあります。そのB列の空欄セル の上からA列の値を上から順番に値を入れたいのですがうまくいきません。 何か良い方法を教えて頂けませんでしょうか?     A    B 1    23    5 2    21 3    26    8 4    3 5    6    7 6    0 7    0 8 9 10 このような値を下記の様にしたいと思っています。     A    B 1   23    5 2    21    23 3    26    8 4    3    21 5    6    7 6    0    26 7    0    3 8        6 9 10 下記の様に記述はしたのですが、全然的外れでした。 For m = 1 To 10 For n = 1 To 10 If .Cells(n, "A").Value <> 0 And .Cells(m, "B").Value = "" Then .Cells(m, "B").Value = .Cells(n, "A").Value End If Next n Next m

  • セルの選択、貼り付け

    よろしくお願いします。 次のような処理をするプログラムを書きたいのですが、うまく書けません。教えてください。 (処理) 1つのExcelファイルの中で、sheet1A列のセルの値と同じ値を有するセルがsheet2A列にある場合、当該行のB列の値をsheet1のセルに貼り付ける。   (前) 〈sheet1〉       〈sheet2〉            A  B …       A  B …              1 c1           1 c1 200   2 b2           2 a1 300   3 d5           3 b3 500            :              4 b2 400                 5 d5 500                           :   (後) 〈sheet1〉                A  B …           1 c1 200     2 b2 400      3 d5 500    :            

  • Excel セルの値で行を選ぶ

    Excel セルの指定に関して質問です。 セルの値で列(行)を選択するにはどうするのでしょうか? 例えば B5に "3"が入っていたらC列(C4セル)、"4"が入っていたらD列(D4セル) を参照するというような具合に、ある特定のセルの値によって参照する列を変えたいのですが。 R1C1形式中にセルの参照をさせれば可能になりそうですが記述方法が分かりません。 よろしくお願いします。

  • ExcelのVBAで、条件でセルに色付けしたい

    VBは超初心者です。どなたか教えてください。 データをシートに貼り付けた後の処理で、あるセルの値を判断して その行(範囲あり)を灰色に塗りつぶしたいのです。 よろしくお願いします。 例えば、A列のセルに"B"の文字が入っていたら "10B"の行(A2からC2)が灰色に。 A列 B列  C列 10A 1000  あさん 10B 1500  いさん 20A  300  うさん

  • エクセルマクロでセルの結合をしたい

    エクセル2003です。 E列の値は昇順で並んでいます。 先頭E3行から下の行の値と比較し 同じ値の場合はセルを結合し 値が違う場合は結合しないで次の行を比較という処理を 最終行まで行いたいです。 (添付画像参照) 例えば E3-AA E4-BB E5-BB E6-CC E7-DD E8-EE E9-EE E10-EE E11-FF セルE4とE5を結合します セルE8とE9とE10を結合します。 次に結合した行と同じ行数のF列を結合します。 さらに結合した行と同じ行数のG列を結合します。 上記の場合 セルF4とF5を結合、 セルF8とF9とF10を結合します。 セルG4とG5を結合、 セルG8とG9とG10を結合します。 さらに結合した行と同じ行数のA列を結合します。 上記の場合 セルA4とA5を結合、 セルA8とA9とA10を結合します。 さらに結合したA列に数字を入力します A4とA5を結合したA4、A5セルには 2行を結合したので2と入力 セルA8とA9とA10を結合したA8、A9、A10セルには 3行を結合したので3と入力。 とりあえず、E列の結合を完成させてそのE列を 3行目から最終行までコピーして、 「形式を選択して貼付」の「書式」で 書式のみをF,G,A列にコピーすれば出来るのではと 以下の構文を作成しました。 セルの結合時は結合するセルの先頭の行の値が結合済セルの値に なるので最初にE列を結合していく時に A列に結合回数を記入しようと考えました。 ただ2行の結合は、A列に2と入力されたのですが 3行連結した時も2と入力されてしまったので改造しました。 テストデータでは期待しているようになったのですが 本番データでは結合される行が4行、5行等それ以上の行数が 結合する場合が有りこの構文ではなるべくしてなっているのですが 4行以上の行結合はA列の値はいずれも3になってしまいます。 (添付画像参照) どう修正すればいいか手段が考え付きません。 どのような方法がありますでしょうか? よろしくお願いします。 Sub セル結合2() '2013年10月25日 Dim 最終行 As Integer Dim 処理行 As Integer Dim 比較行 As Integer Dim 確認値 As Variant Dim 比較値 As Variant Dim 結合回数 Dim 戻行 Application.ScreenUpdating = False ThisWorkbook.Sheets("Sheet1").Select 最終行 = Cells(Rows.Count, 5).End(xlUp).Row 'F列の最終行を求めます。 Application.DisplayAlerts = False For 処理行 = 3 To 最終行 '3行目から最終行の前まで繰り返します。 比較行 = 処理行 + 1 '処理行の一つ下の行と比較します。→比較行とします。 確認値 = Cells(処理行, 5).MergeArea(1, 1).Value 'チェックする値を、確認値に代入します。 比較値 = Cells(比較行, 5) '比較する値を、比較値に代入します。 If 確認値 = 比較値 Then '値が同じかどうか Range(Cells(比較行, 5), Cells(処理行, 5)).MergeCells = True 結合回数 = Cells(処理行, 1) + 1 'セルを結合した回数 戻行 = 処理行 - 1 '処理行の1行上の行数を戻行とする Cells(処理行, 1) = 結合回数 '処理行のA列に結合回数を記入 Cells(比較行, 1) = 結合回数 '比較理行のA列に結合回数を記入 If Cells(処理行, 1) >= 3 Then 'もしも処理行のA列が3以上の場合 Cells(戻行, 1) = 結合回数 '戻り行のA列に結合回数をセット End If '同じでない場合は以下へ End If '同じでない場合は以下へ Next 処理行 Application.DisplayAlerts = True Application.ScreenUpdating = True Range(Cells(3, 5), Cells(最終行, 5)).Copy Range(Cells(3, 6), Cells(最終行, 6)).PasteSpecial Paste:=xlPasteFormats Range(Cells(3, 7), Cells(最終行, 7)).PasteSpecial Paste:=xlPasteFormats Range(Cells(3, 1), Cells(最終行, 1)).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False MsgBox "終了しました" End Sub

  • 複数の条件に合う行の特定のセルを返す

    ほぼ同じ質問をいくつか見かけたのですが、その式を自分の内容に置き換えても全く希望通りの結果が出ず、質問させてください。 2 1 Aさん 4 1 Bさん 5 1 Cさん 2 2 Dさん 5 2 Eさん セルのA1には「2」、B1には「1」、C1には「Aさん」と入ったシートがあり、例えばセルのD1に A列、B列ともに「2」が入力されている4行目のC列「Dさん」という値が反映して欲しいのですが、その関数が分からなく困っています。 他にもA列が「5」、B列が「1」の結果が(Cさん)が欲しい時もあり、条件にはA列の値とB列の値を使う方法で考えています。 お知恵を貸してください。

  • if関数でハイパーリンク付きセルをコピーしたい

    ・A1セルにハイパーリンクが貼ってあります ・B1セルに1と記入してあります ・C1セルに数式があります =IF(B1=1,A1,"") この場合C1セルにハイパーリンクはついて来ません。 どうすればハイパーリンクが付いたままA1セルをC1にコピーできるのでしょうか?

専門家に質問してみよう