Excel VBAのテキストを片手に色々試しています!コピー元の文字と書式を反映する方法は?

このQ&Aのポイント
  • Excel VBAのテキストを片手に色々試しています。セルをダブルクリックしたときに実行するマクロを作成しましたが、書式が崩れる問題があります。コピー元の文字と書式を反映する方法を教えてください。
  • Excel VBAのテキストを使って色々な試行錯誤をしています。セルをダブルクリックした際に実行するマクロを作成しましたが、書式が崩れる問題が発生しています。コピー元の文字と書式を反映する方法を教えていただけますか?
  • Excel VBAでテキストを試している最中です。セルをダブルクリックした際に実行するマクロを作成しましたが、書式が崩れてしまう問題があります。コピー元の文字と書式を正しく反映させる方法を教えてください。
回答を見る
  • ベストアンサー

Excel VBA

Excel VBAのテキストを片手に色々(仕事で必要で・・・)試しています。そこで、セルをダブルクリックしたときに実行するマクロを作成してみました。(テキストにしたがって)コピー元シートのA2番地に入力されている文字と同じ文字を、Shieet1の任意のセルをダブルクリックすると自動的に入力されるマクロです。ですが、コピー元の文字だけではなく書式も一緒に反映されるので、任意のセルに書式が設定されている場合、書式が崩れてしまいます。なので、どなたか 文字だけ もしくは 書式だけ を自動実行する方法を教えてください。 なかなか伝わりにくい文章で申し訳ありませんが・・・。宜しくお願いいたします。ちなみに↓↓VBの記述を貼り付けます。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True Worksheets("コピー元").Range("A2").Copy Destination:=Target End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

COPYを行うと、セルがコピーされるからです。 値だけでよいのであれば、=を使います。 Target.Value = Worksheets("コピー元").Range("A2").Value

tanpopo199
質問者

お礼

ありがとうございます。言われてみるとコピーしてますね。 ただ、VB初心者なので疑問に思うことはあっても修正することが出来ず困ってしまいます。答えていただいたついでに、ダブルクリックで太字にしたり文字の色を変えたりする場合はどうしたらよいのでしょうか?色々試したのですがうまくいきません。スミマセン。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> ダブルクリックで太字にしたり文字の色を変えたりする場合はどうしたらよいのでしょうか? ダブルクリックイベントはすでにWorksheets("コピー元")からのデータ転記で使っていますので、さらに別に書くとエラーになるはずです。 以下は、空白のセルでダブルクリックしたらコピー元のデータを表示し、空白以外のセルでダブルクリックしたら太字&赤色に変える例です。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True With Target If .Value = "" Then .Value = Sheets("コピー元").Range("A2").Value Else .Font.Bold = True .Font.ColorIndex = 3 End If End With End Sub

tanpopo199
質問者

お礼

ありがとうございました。色々と教えていただいて少しずつわかってきたような気がします。そこでもうちょっと質問なんですが…。 If .Value = "" Then .Value = Sheets("コピー元").Range("A2").Value Else の Then と Else の意味を教えてください。初歩的ですがスミマセン。

tanpopo199
質問者

補足

すみません。この質問を除いた方。本当に基本的なことでした。調べたらわかりました。簡単なことでした。

関連するQ&A

  • どこが間違ってますか? (エクセルVBAです)

    質問をご覧くださりありがとうございます。 どなたか助けていただけないでしょうか。 以下のコードの場合、B2セルをダブルクリックすればシート(1)が開くと思っていたのですが、B2以外のセルをダブルクリックしてもシート(1)が開いてしまいます。 どこが悪いのでしょうか。 詳しい方がいらっしゃいましたら、どうか教えてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean) If Target = Range("B2") Then cancel = True Worksheets("シート(1)").Activate End If End Sub どうか、宜しくお願いいたします。

  • エクセルVBAについて

    エクセルVBAについて 下ような、最初に選択したセルに、次に選択したセルをコピーするマクロを使用しています。 Dim Frstcell As Range Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.MergeCells = False And Target.Count > 1 Then Exit Sub On Error Resume Next 'エラーを無視 If Target.Column >= 5 And Target.Column <= 35 Then 'E:AIコピー先 Set Frstcell = Target.Cells(1) ElseIf Target.Column >= 45 And Target.Column <= 46 Then 'AS:ATコピー元 If Target.Cells(1).Value = "" Then Exit Sub Target.Copy Frstcell.MergeArea End If On Error GoTo 0 'エラートラップ終了 End Sub この場合、コピー元の枠線の書式も、コピー先にコピーされてしまうのですが、 書式なしでコピーするにはどうしたらよいでしょうか? よい方法がありましたら、よろしくお願いいたします。

  • SheetBeforeDoubleClick

    ダブルクリックすると、選択セルが切り取り状態になるようにしたいのですが。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Selection.Cut End Sub 上記ではダメでした。 正しい表記法を教えて下さい。 よろしくお願いします。

  • エクセル VBA について

    エクセルで、 ダブルクリックしたら"*"を表示したい範囲に【入力】という名前をつけ、 ダブルクリックしたら9つ左のセルの内容を表示したい範囲に【金額】という名前をつけ、 二つの構文?をVisual Basicに作成したんですが、エラーが出てしまいます。 ひとつずつだと上手くいくのですが、なぜでしょうか? わかる方教えてください。 あと申し訳ないのですが、VBAはまったくわからないため、ネット上で構文をコピーして貼り付けました。 そんな者でもわかる修正の説明をお願いいたします。 以下が作成し、エラーとなってしまう構文です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "金額" If Target.Value = "" Then Target.Value = Target.Offset(0, -9).Value Cancel = True End If End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "*" Then Target = "" Else Target = "*" End If End If End Sub

  • 選択したセルでダブルクリックをするとエクセルマクロによりそのセルがコピ

    選択したセルでダブルクリックをするとエクセルマクロによりそのセルがコピーされて、メモ帳等のテキストエディタで貼りつけるとその値が出るようにしたいと思っています。 ほとんどイメージ通りにできたのですが、テキストエディタで貼りつけた値に加えて改行が入ってしまいます。 どのようにすると改行コードを消せますか?できないのなら、どのようにすればエクセルで任意のセルをダブルクリックをしたときに改行コードのないようにコピーできますか? 参考に現在のVBEで記述したコードを示します。 ----------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) Target.Interior.ColorIndex = 37 Cancel = True Target.Copy End Sub

  • Excel VBAについて

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("F:F")) Is Nothing Then Exit Sub Application.Goto Worksheets("人件費").Range("A1") Worksheets("人件費").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Offset(, -5).Value cancel = True End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub Application.Goto Worksheets("外注費").Range("A1") Worksheets("外注費").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Offset(, -5).Value cancel = True End Sub 上の指令はFの列をダブルクリックすると人件費のシートが開いてAある値を人件費の新しいセルのAに代入する指令ですが それをG列ダブルクリックで外注費シートに同じようにやろうと思いましたが出来ません。 たぶん根本的に書き方が間違っているのかと思われますが、ご指導のほどお願いします。

  • VBAの書き方

    VBA初心者です。 EXCEL2007を使っています。 いま、下記のような書き方で、 1.セル(A1)をダブルクリックしたら「Z:\管理\01.xlsx」を開く 2.セル(A2)をダブルクリックしたら「Z:\管理\02.xlsx」を開く ・ ・ ・ n.セル(An)をダブルクリックしたら「「Z:\管理\0n.xlsx」を開く という動きをしたいと考えています。 わからないまま、WEBサイトで見つけた書き方を下記のように書き換えて試してみました。 一つではうまくいきますが、二つ目の設定をすると・・・ 添付画像のように、「コンパイルエラー 名前が適切ではありません」と出てしまいます。 WEBで調べた限りでは、 「Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)」 の部分が同じ名前がエラーの原因のように思えますが、どうしてよいかわかりません。 よろしくお願いします。 -------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True ChDir "Z:\管理\" Workbooks.Open Filename:="Z:\管理\01.xlsx" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$2" Then Exit Sub Cancel = True ChDir "Z:\管理\" Workbooks.Open Filename:="Z:\管理\02.xlsx" End Sub

  • エクセルVBAに関して

    VBAの知識があまりないので教えて頂きたいのですが、セルの内容が変更されたら マクロが実行される Private Sub Worksheet_Change(ByVal Target As Range) というのがあるかと思います。 セルに書かれた関数によって、セルの内容が変化したときにマクロが実行されるVBA関数はあるのでしょうか?

  • エクセルVBA ダブルクリックした左隣の値を返す方法

    いつもお世話になっております。 あるワークシートにおいて、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) If ActiveCell.Column = 7 Then Target.Value = "希望" End If End Sub というマクロを記述することができました。 今度は、 G列のどこかのセルをダブルクリックすると、 同じ行のE列の値が、 ダブルクリックしたセルに入るようにしたいのです。 どのような記述をすればよいのか ご教示ください。

  • エクセルにてダブルクッリクしたときの動作

    エクセルにて特定のセルをダブルクリックをした時に日付を表示させたくて以下のマクロを組みました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean) If intersect(Target, Range("A1")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Format(date, "yyyy") Cancel = True End If End Sub この場合A1セルをダブルクリックした時のみ西暦が入力されるようになっていますが、他のセルで、例えばB1セルでは月、C1セルでは日にちをダブルクリックで入力させるにはどうしたら良いでしょうか? If intersect(Target, Range("A1")) Is Nothing Then Exit Sub のTarget, Rangeを書き換えて複数このマクロを書き込んだのですがうまく動作しなくて。 知恵を貸していただけると助かります。

専門家に質問してみよう