No.4ベストアンサー
- 回答日時:
簡単だと思って手を出したらはまった・・・(苦笑)
もっときれいな書き方もあるでしょうけど、
ざっと書いてみました。われながらきたない
コーディングで辟易ですがこんな感じでどうでしょう?
コピー:macro1にctrl+qを
ペースト:macro2にctrl+wを
それぞれ振っておくとよいでしょうか?
ソースがわかれば適当に改造してください。
(ちなみに今は値をコピーしてますが
やる気になれば相対コピーとかも作れるかも・・・)
Public thisarray
Sub Macro1()
Dim homecell, endcell
Set selectcell = Selection
For Each ThisCell In selectcell
If Not IsObject(homecell) Then
Set homecell = ThisCell
Set endcell = ThisCell
Else
If ThisCell.Row < homecell.Row Then Set homecell = homecell.Offset(ThisCell.Row - homecell.Row, 0)
If ThisCell.Column < homecell.Column Then Set homecell = homecell.Offset(0, ThisCell.Column - homecell.Column)
If ThisCell.Row > endcell.Row Then Set endcell = endcell.Offset(ThisCell.Row - endcell.Row, 0)
If ThisCell.Column > endcell.Column Then Set endcell = endcell.Offset(0, ThisCell.Column - endcell.Column)
End If
Next
ReDim thisarray(endcell.Row - homecell.Row, endcell.Column - homecell.Column)
For Each ThisCell In selectcell
If IsEmpty(ThisCell.Value) Then
thisarray(ThisCell.Row - homecell.Row, ThisCell.Column - homecell.Column) = "="""""
Else
thisarray(ThisCell.Row - homecell.Row, ThisCell.Column - homecell.Column) = ThisCell.Value
End If
Next
End Sub
Sub Macro2()
Set homecell = Selection.Cells(1, 1)
If IsEmpty(thisarray) Then Exit Sub
For i = 0 To UBound(thisarray, 2)
For j = 0 To UBound(thisarray, 1)
If Not IsEmpty(thisarray(j, i)) Then
homecell.Offset(j, i) = thisarray(j, i)
End If
Next
Next
End Sub
ご回答ありがとうございます!
マクロに初挑戦しました(笑)
コピーと形式を選択して貼付をマクロに記録しました!
無知なもので、専門的なことがわからないのですが、Public thisarray以下は、関数でしょうか??
No.5
- 回答日時:
#4です。
Publicはマクロ(sub)間で値を受け渡すためのものです。
通常のコピーペーストは選択された状態(selection)
で受渡ししますが、今回は通常のコピーではないので
コピーしたものを一度配列(array)でとっておいて、
貼り付けのときに参照しているわけです。
VBAでいう関数(ユーザー関数)は一般にfunction
のことなので、ちょっとご質問の意味は違うかなぁ
という感じですが・・・
どうでしょ?意図した通りにうごきますか?
何度もありがとうございます。
勉強が足りなく、理解できずにいるので、マクロに関してもう少し勉強してから試してみます。
ありがとうございました。
No.3
- 回答日時:
こんばんは
#2の方の回答への補足にあなたが書いたように、飛び飛びのセルをコピーしても、貼り付けるときは連続したセルに張り付いてしまいます。
これはそういう仕様なので、どうしようもないと思います。
特殊なケースしかできませんが、対処としてありうるのは、
1.シートの仕様にもよりますが、そもそも隣り合ったセルになるようにシートを組替える。
2.A1,C1をA3,C3に貼り付けたい場合で、もしB1が空白セルなら、「形式を選択して貼付」で「空白を無視する」をチェックする。
ぐらいですかねえ。
誰か他にいい案があったらヘルプ願います。
ご回答ありがとうございます。
>飛び飛びのセルをコピーしても、貼り付けるときは連続したセルに張り付いてしまいます。
↓
やはりそうなんですね。
飛び飛びのセルの間が空白セルの場合は、No.3さんの言うようにできましたが、空白セル以外の場合はできないんですね・・・。
とても勉強になりました。ありがとうございます。
No.2
- 回答日時:
>Ctrlキーを押しながらセルを選択してコピーして
>貼り付けようとしましたが、できませんでした。
普通はこの方法でできます。
できないとはどのようにできないのでしょうか?
a1をクリック、ctrlをおしてc1クリック,同ctrl+e1
クリック、そこで編集→コピーもしくはctrl+c
例えばa3をクリックして編集→ペーストもしくは
ctrl+vで貼れるはず。
だめならどこで、どのようなエラーがでますか?
この回答への補足
ご回答ありがとうございます。
質問がわかりにくくても申し訳ありません。
会社のパソコンがWindows2000で、自宅がXPです。
会社のパソコンで試してみたところ、Ctrlキーを押しながらセルを選択してコピーしてもコピーされなかったのですが(右クリックで「貼り付け」しようとしてもその文字(?)がクリックできないようになっています。エラーメッセージは出ませんでした)、今自宅のパソコンで試してみたところ、同列・同行のセルであればコピーはできましたが、例えばA1とC1をコピーして、A3とC3に貼り付けたかったのですが、値はA3とB3(C3ではなく)に貼り付けになってしまいます。
複数選択でコピーした値はくっついて貼り付けになってしまうのでしょうか?
また、A1、B2など列も行も違うセルを選択してコピーしようとすると「そのコマンドは複数の選択範囲に対して実行できません」となってしまいます。
列や行が違う場合は無理なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- Excel(エクセル) エクセルからビジオのリンク貼り付け 1 2023/03/30 17:51
- Excel(エクセル) Excelにて、セルに入力してある文字の中から文字と最後の数字のみ切り取り貼り付けるVBA 5 2022/12/27 08:40
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) エクセル ブック間のコピー 5 2022/04/24 08:11
- Excel(エクセル) エクセルについて教えてください。 3 2023/03/24 08:34
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルで隣接していない複数...
-
Excel 行の連続データを列に参...
-
エクセルで勝手に「折り返して...
-
エクセルの2ページ目の作り方
-
エクセルで値だけコピーして背...
-
EXCELのオートフィルの設定を変...
-
エクセルのコピペでクリップボ...
-
エクセルで、選択範囲の数値全...
-
Excel 結合されたセルへの貼り...
-
EXCELシートをPowerPointにきれ...
-
メールソフト「サンダーバード...
-
Excel:文字との間に数字の組合...
-
エクセルオートフィルで書式を...
-
Excelでコピーした行の挿入を繰...
-
エクセルでの行数・列数を指定...
-
Excelでコピーをとったセルの色...
-
Excelのコピー・切り取り機能が...
-
「選択範囲を解除してアクティ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルの2ページ目の作り方
-
エクセルで勝手に「折り返して...
-
エクセルで隣接していない複数...
-
Excel 行の連続データを列に参...
-
EXCELシートをPowerPointにきれ...
-
エクセルで「コピーしたセルの...
-
EXCELのオートフィルの設定を変...
-
Excel)軽いデーターのはずなの...
-
メールソフト「サンダーバード...
-
Excelに、ダブルクォーテーショ...
-
エクセルオートフィルで書式を...
-
エクセルで値だけコピーして背...
-
Excelでコピーした行の挿入を繰...
-
エクセルで、選択範囲の数値全...
-
エクセルでの行数・列数を指定...
-
「選択範囲を解除してアクティ...
-
エクセル 別シートへのコピー...
-
EXELで複数のとびとびのセルを...
おすすめ情報