マクロで Destination:= では値のみのコピーはどうやって書けばよいのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

定かではありませんが、Copy Destination では


「値のみ貼り付け」などの指定は出来なかったように思います。

クリップボードを経由せず値のみ、というのであれば
「Value」を使う方法もあります。

【例】Sheet1 A1:A5の値を Sheet2 C6:C10 にコピー(代入)
Sub test()
  Sheets(2).Range("C6:C10").Value = Sheets(1).Range("A1:A5").Value
End Sub

※「Copy」を使う場合、貼り付け先は Range("C6") で範囲を自動的に取得してくれますが
 「Value」を使う場合は Range("C6:C10") と、貼り付け先と同じ分だけ範囲を指定する必要があると思います。
    • good
    • 0
この回答へのお礼

やはり出来ないんですね。有難うございました。

お礼日時:2005/04/03 23:08

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qpascalでのクリップボードの使い方

pascalであらかじめ用意してある文章をクリップボードを利用して、他の場所に貼り付けができるようにするプログラムを作くろうと思っているのですが少しうまい具合にいかなくて困っています。
文章をコピーするときなのですがeditなどの一列の文はクリップボードのClipboard.AsTextで出来たのですが、memoのような改行されるようなものが出来ませんでした。改行される文をクリップボードに移したいときはどうすればよいでしょうか?

Aベストアンサー

Memo1.SelectAll;
Memo1.CopyToClipboard;

でどうでしょう。全て選択された状態になってしまいますが。

Qエクセル2010 マクロで値のみコピー

こんばんは、エクセル2010を使っています。

マクロでデータを値のみをコピーしたいのですが、うまくいきません。

文は 以下の様なものです。



Sub ボタン1_Click()

Worksheets("Sheet4").Range("e1").Copy Worksheets("sheet2").Range("b1").PasteSpecial Paste:=xlValues

End Sub

マクロの画面を閉じようとした時に、Pasteの部分が選択され 
コンパイルエラー 修正候補:ステートメントの最後

と言うダイアログボックスが出てしまいます。

ご存知の方教えて頂けないでしょうか、よろしくお願いします。

※ ちなみに

Worksheets("Sheet4").Range("e1").Copy Worksheets("sheet2").Range("b1") 

ならちゃんとコピーされるのですが、コピー元の数式がコピーされるので、値のみをコピーしたいのです。

Aベストアンサー

worksheets("Sheet2").range("B1").value = worksheets("Sheet4").range("E1").value
といった具合の方が簡単です。




>Worksheets("Sheet4").Range("e1").Copy Worksheets("sheet2").Range("b1").PasteSpecial Paste:=xlValues

デタラメやってもダメです。そんな構文はありません。

まぁ、といっても
worksheets("Sheet4").range("E1").copy

worksheets("sheet2").range("B1").pastespecial paste:=xlpastevalues
のように、2行に分けて書くだけですが。

QCLCLというクリップボード拡張ソフトの使い方

ダウンロードしてみたのですが、さっぱり使い方がわかりません。
使い方の書いてあるHPなどないでしょうか?

説明書を読んだのですが、なんというか妙にマニア向けなのか、
半分も意味がわかりません。恥ずかしながら。
ネットでも使い方を調べたのですが、もうさっぱりです。
詳しい人に人気があるみたいで、他の同種類のソフトは使い方はすぐわかるのですが、これだけさっぱりわかりません。なんか急に頭悪くなったのかも・・。
ソフトに求める機能上、最前面表示と、コピー順に上から並べる機能を兼ね備えてるのがこれだけみたいので何とか使いたいのですが。
拡張機能はあとからでいいのですが、基本的な使い方がわかりません。
ということで、
詳しいかたおられたら、使い方の書いてあるページがあれば教えてください。お願いします。

Aベストアンサー

もっとも基本的な使い方は
1) 起動するとタスクバーにクリップのアイコンが表示されます。
2) そのアイコンを右クリックすると「メニュー」が表示されます。
3) CLCLを起動していた時にクリップボードにコピーされたデータが並んでいますから、
  貼り付けたいところにデータをクリックすると貼り付けられます。

スタートアップファイルに登録しておくと良いでしょう。

細かな機能について、わかりやすい解説を探したのですが、
残念ながら見つかりませんでした。
少しずつ試行錯誤しながら覚えるしかありませんね(^^;)
DLしたファイルのreadme.txtを熟読してみてください。
使えるようになれば、手放せなくなる便利なソフトです。

参考URL:http://blog.webcreativepark.net/2007/08/30-221553.html

Qマクロ「A1の値は、セル範囲でA1:AB39の右2文字が YR と書いてあるセルの右隣の値」

よろしくお願いします
いつもgooの皆さんに大変お世話になっています
エクセルは2013です

マクロで
「A1の値は、セル範囲でA1:AB39の値(文字列)の右端2文字が YR と書いてあるセルの右隣の値」
はどういうコードになるでしょうか

例えば セル D10 の値(文字列)が、「2月合計yr」でしたら
セル A1 には 右隣のセル E10 の値を表示したいのです

右2文字は Ucase(Right(セル,2)) ですが
「セル範囲A1:AB39で、そのセルの右端2文字がYRと書いてあるセルの右隣のセル」を
探す方法が分かりません

Aベストアンサー

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c As Range
 With Range("A1:AB39")
 Set c = .Find( _
  What:="*yr", _
  After:=Range("A1"), _
  LookIn:=xlValues, _
  LookAt:=xlWhole, _
  SearchOrder:=xlByRows, _
  MatchCase:=False, _
  MatchByte:=False)
    If Not c Is Nothing Then
     c.Offset(, 1).Value = Range("A1").Value
    End If
 End With
End Sub
'//

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c...続きを読む

Qワードの使い方

ワード200です。
クリップボードの使い方です。
クリップボードに「全てクリア」というボタンはあるのですが、一部をクリアしたいときのボタンはありません。
一部(たとえば、3つコピーしているものがあったとして、ひとつを)クリア(削除)したいときはどうするのですか?

Aベストアンサー

たぶん最近のマシンをお使いでしょうから、クリップボードに少々溜まっても、放置しておいて何ら問題はありません。

それに、いちいちクリアせずとも、ワードなどを終了させたときに、クリップボードに大きなデータがあれば、消してよいかを聞いてきます。

クリップボードとは、その名のとおり、文章や画像などをほかの場所にコピーするとき、一時的においておく場所と考えてください。

Qエクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

単刀直入にやりたいことを述べます。

Cドライブと仮定します。3つのBOOKがあります。
それぞれ
-----
BOOK1.xls「○○Sheet」・・・(実行するファイル)
  A
1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です)
2 A2:E2・・・(コピーするセル範囲の指定)
3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です)
4 A5・・・(貼り付け先のセルの指定)
-----
BOOK2.xls「△△Sheet」・・・(コピー元ファイル)
  ABCDE
1 あいうえお
2 かきくけこ
3 ・・・・・
-----
BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)
  ABCDE
1 ・・・・・
2 かきくけこ・・・(貼り付け)
3 ・・・・・
-----
>やりたいこと
BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、
その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、
BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、
その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。

別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、
以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。
よろしくお願いします。(ちなみにエクセル2000又は2003です)

単刀直入にやりたいことを述べます。

Cドライブと仮定します。3つのBOOKがあります。
それぞれ
-----
BOOK1.xls「○○Sheet」・・・(実行するファイル)
  A
1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です)
2 A2:E2・・・(コピーするセル範囲の指定)
3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です)
4 A5・・・(貼り付け先のセルの指定)
-----
BOOK2.xls「△△Sheet」・・・(コピー元ファイル)
  ABCDE
1 あいうえお
2 かきくけこ
3 ・...続きを読む

Aベストアンサー

思われていることと違っていたらすみませんが、参考までに下記のコードをBOOK1.xlsのマクロに貼り付けて実行してみてください。
コピー先のBOOKを壊してはいけないので必ず、コピーしたBOOK等でテストしてみてください。
3つのBOOKがCドライブ直下にあり、BOOK1.xlsの参照するシートのシート名が○○Sheetであることが前提です。

メニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:コピーペースト)
 ↓
名前を入力しましたら、「作成」をクリック
 ↓
Microsoft Visual Basicの画面が開きますのでSub コピーペースト()の下に次のコードをコピーして貼り付けてください。

Dim INファイル名 As String
Dim INシート名 As String
Dim IN範囲 As String
Dim OUTファイル名 As String
Dim OUTシート名 As String
Dim OUT範囲 As String
Dim 文字列 As String
Dim 検索文字 As String
Dim 文字カウント As Integer
Dim 文字数 As Integer

'○○SheetのA1にあるファイル名とシート名を取得する
文字列 = Sheets("○○Sheet").Range("A1")
検索文字 = "「"
文字カウント = Application.WorksheetFunction.Find(検索文字, 文字列, 1)
文字カウント = 文字カウント - 1 'ファイル名の文字数を取得
INファイル名 = Left(文字列, 文字カウント) 'INファイル名の取得
文字数 = Len(文字列)
文字カウント = 文字数 - (文字カウント + 1) 'シート名の文字数を取得
文字列 = Right(文字列, 文字カウント)
文字カウント = Len(文字列) - 1
INシート名 = Left(文字列, 文字カウント) 'INシート名の取得
IN範囲 = Sheets("○○Sheet").Range("A2") 'コピーの範囲

'○○SheetのA3にあるファイル名とシート名を取得する
文字列 = Sheets("○○Sheet").Range("A3")
検索文字 = "「"
文字カウント = Application.WorksheetFunction.Find(検索文字, 文字列, 1)
文字カウント = 文字カウント - 1 'ファイル名の文字数を取得
OUTファイル名 = Left(文字列, 文字カウント) 'OUTファイル名の取得
文字数 = Len(文字列)
文字カウント = 文字数 - (文字カウント + 1) 'シート名の文字数を取得
文字列 = Right(文字列, 文字カウント)
文字カウント = Len(文字列) - 1
OUTシート名 = Left(文字列, 文字カウント) 'OUTシート名の取得
OUT範囲 = Sheets("○○Sheet").Range("A4") '貼り付ける位置

'A1のセルの値とA2セルの値を参照しコピー
Workbooks.Open Filename:="C:\" & INファイル名 'INファイルのOPEN
Workbooks(INファイル名).Worksheets(INシート名).Activate
Worksheets(INシート名).Range(IN範囲).Select
Selection.Copy 'コピー
Application.DisplayAlerts = False
ActiveWorkbook.Close savechanges:=False 'INファイルのCLOSE
Application.DisplayAlerts = True

'A3のセルの値と、A4セルの値を参照しペースト
Workbooks.Open Filename:="C:\" & OUTファイル名 'OUTファイルのOPEN
Workbooks(OUTファイル名).Worksheets(OUTシート名).Activate
Worksheets(OUTシート名).Range(OUT範囲).Select
Application.DisplayAlerts = False
ActiveSheet.Paste '貼り付け
Application.DisplayAlerts = True
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWorkbook.Close savechanges:=True 'OUTファイルのCLOSE
Application.DisplayAlerts = True

MsgBox "コピー&ペーストが終了しました。  "
'****コピー貼り付けはここまで ****

Microsoft Visual Basicの画面を×で閉じます
 ↓
Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
先ほど名前を付けたマクロを選択して「実行」をクリック

BOOK1.xlsの参照するシート名が○○Sheetでない場合は上記のコードの○○Sheetのところを修正してください。
また、各BOOK*.xlsがCドライブ直下に無い場合は、上記コードの"C:\"のところを修正してください。

思われていることと違っていたらすみませんが、参考までに下記のコードをBOOK1.xlsのマクロに貼り付けて実行してみてください。
コピー先のBOOKを壊してはいけないので必ず、コピーしたBOOK等でテストしてみてください。
3つのBOOKがCドライブ直下にあり、BOOK1.xlsの参照するシートのシート名が○○Sheetであることが前提です。

メニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:コピーペースト)
 ↓
名...続きを読む

QWordのクリップボード

Wordで文字列をコピー(メニュー「編集」-コピー や Control+C)を行うと、
クリップボードに入ります。

しかし、コピーしてすぐ貼り付けを行うときでもクリップボードに入ります。

クリップボードにたくさんアイテム(文字列)が入っていると うざったいので、
できればコピー後すぐ貼り付けるものはクリップボードに入れたくないのですが、
クリップボードに入れるものとそうでないものを分けるにはどうすればよいですか。

また、クリップボードに入っているアイテムのうちの一部のみを消去する(選んだものだけクリア)にはどうすればよいですか。


Word2000です。

Aベストアンサー

こんにちは。

>長い間とっておいて繰り返し貼り付けるものはクリップボードに入れて、
>すぐ貼り付けて後で貼り付ける予定のないものはクリップボードに入れないようにするにはどうすればよいのか

他の方の回答にもあるとおり、クリップボードは、あくまでも「一時的な」記憶領域としてもうけられたものです。

ですからクリップボードの内容を、ユーザーが意識して管理するという使い方は、はじめから想定されていないと思います。


しかしクリップボードでそれを実現できなくても、
似たような機能が、
アプリケーションにいくつか装備されていると思います。

たとえばWordで、よく使う単語や文章があるのであれば、
IMEに「単語登録」するなり、
「定型句」として登録しておけば、
いくらかましになるのではないかと思います。

Qエクセル2000:マクロ(自動記録)ときのソートの記録で「Header:=xlGuess」とは?

こんにちは、よろしくお願いします。
私のVBAのスキルはマクロで自動記録させて、ある程度の手直しをするレベルです。

そこで、「並替」で、次の【意味と違い】を教えてくさだい。「Header:=xlNo」「Header:=xlGuess」
(どうもこの関係で並替えに一行目だけ並び変わらないという不具合を起こすことがあるような気がします。「xlGuess」を「xlNoに」変えると不具合が直りましたが、意味もわからず結果だけ直っても納得いかなくて。)よろしくお願いいたします。

Aベストアンサー

こんにちは。Wendy02です。

>「Header:=xlGuess」

Header については、Sort のヘルプでは、
「最初の行がタイトル行であるかどうかを指定します。」
とあります。

ただ、実際に自分でコーディングする場合は、xlGuess は、ひじょうに使いにくいです。これは、例えば、データが数値であって、第一行目が文字列なら、そのxlGuessは、タイトルがあるものと考えます。そうでなければ、データ行と解釈します。

しかし、コーディングの段階で、こうした曖昧な形を残したまま、マクロとして、実行するということは、あまりすべきではありません。

基本的には、タイトル行があるものとして作るということが、Excelでは基本ですから、元からないままに、並べ替えという仕様、つまり、xlNo というのは、あまり指定しないですね。なるべくなら、xlYes にするような、全体設計をします。私は、そのために、ダミーのタイトル行を加えることもあります。

Qクリップボードの中身は、どうやって見るのですか?

 クリップボードは、蓄積されるのですか?例えば、「コピー」をしてそのままにしておくとクリップボードに残っているのですか?
 クリップボードの中身が見たいのです。

Aベストアンサー

クリップボード関連のユーティリティなどをインストールしていない限り、何かをクリップボードにコピーするとそれまでにクリップボードに入っていたものは失われます。そうしてクリップボードに入ったものは、別な何かがクリップボードにコピーされるか、あるいはWindowsが終了するまで(再起動/ログオフなど)、そのまま内容が保持されます。

WindowsXP,2000などであれば、

スタートボタン→ファイル名を指定して実行→clipbrd

とすると、その段階でクリップボードに入っている内容が見れますよ。

Qマクロで、決まった範囲内の一定値のみの消去法は?

エクセルでVBAを使って、図のようにある範囲において、指示した値(W)のセルを
を削除し、下図のように、上方向に移動させるのにはどのようにしたら良いでしょうか。
同一範囲を別な位置に =IF(B2="W","",B2) をコピーする形を作って、作られた範囲を
さらに値のみコピーして後、その範囲を、空白セルを上方向に削除しようとしても、
見かけ上の空白セルで実際は削除されません。
マクロで作ろうとしましたがVBA初心者なので、わかりません。教えていただけないでしょうか。

Aベストアンサー

マクロで逐一削除してった方が簡単そうです。


E1に記入されてる内容を,B2:E7の範囲から削除する:
sub macro1()
 dim c as range
 dim a as variant
 a = range("E1").value

 set c = range("B2:E7").find(what:=a, lookin:=xlvalues, lookat:=xlwhole)
 do until c is nothing
  c.delete shift:=xlshiftup
  set c = range("B2:E7").find(what:=a, lookin:=xlvalues, lookat:=xlwhole)
 loop
end sub


別のマクロ:一括削除してみる
sub macro2()
 range("B2:E7").replace what:=range("E1").value, replacement:="", lookat:=xlwhole
 range("B2:E7").specialcells(xlcelltypeblanks).delete shift:=xlshiftup
end sub

#「削除したくない空白」が「指定範囲」に紛れている場合は,空白ではなく例えば「エラー値」などに置換して削除する




#一応指摘しておきます
ANo2さんのマクロでは,縦に2つW,Wと繋がっていると漏らします。

マクロで逐一削除してった方が簡単そうです。


E1に記入されてる内容を,B2:E7の範囲から削除する:
sub macro1()
 dim c as range
 dim a as variant
 a = range("E1").value

 set c = range("B2:E7").find(what:=a, lookin:=xlvalues, lookat:=xlwhole)
 do until c is nothing
  c.delete shift:=xlshiftup
  set c = range("B2:E7").find(what:=a, lookin:=xlvalues, lookat:=xlwhole)
 loop
end sub


別のマクロ:一括削除してみる
sub macro2()
 range("B2:E7").replace what:=range("...続きを読む


人気Q&Aランキング

おすすめ情報