Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6176 / 13646 ツリー ←次へ | 前へ→

【46773】範囲指定後マクロを走らす 杉下 誠 07/2/14(水) 21:08 お礼[未読]
【46782】Re:範囲指定後マクロを走らす かみちゃん 07/2/15(木) 7:08 発言[未読]
【46787】Re:範囲指定後マクロを走らす 杉下 誠 07/2/15(木) 13:06 お礼[未読]

【46773】範囲指定後マクロを走らす
お礼  杉下 誠  - 07/2/14(水) 21:08 -

引用なし
パスワード
   回答有難う御座いました。自分なりに文構成トライしました。しかし、私マクロ、VBAは8年ほど離れており、たいそう忘れております。下記の文はB3:B6をマクロで順に走らせております。これを、マクロを走らせる前にB3:B6をマウスで範囲指定し、マクロで走らすのはその後のPastespecialからです。又動作セルもB3:B6でなく、マウスで自由に設定後マクロを走らす。この文がうまく構成できないので悩んで居ります。お手数をおかけしますが以上の内容に文を仕上げて頂けないでしょうか?
*********************************
Selection.Copy
  Range("B3").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Application.CutCopyMode = False
  ActiveCell.FormulaR1C1 = ""
  Range("B3:B6").Select
  Range("B4").Activate
  ActiveCell.FormulaR1C1 = ""
  Range("B3:B6").Select
  Range("B5").Activate
  ActiveCell.FormulaR1C1 = ""
  Range("B3:B6").Select
  Range("B6").Activate
  ActiveCell.FormulaR1C1 = ""
  Range("B3:B6").Select
End Sub
*****************************************

【46782】Re:範囲指定後マクロを走らす
発言  かみちゃん  - 07/2/15(木) 7:08 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>回答有難う御座いました。

[46754]のことですね。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=46754;id=excel
(先頭4文字は、全角になっているので、半角にしてください。)
コメントに対するコメントであれば、上記の右上に「返信」というところがある
のでそれをクリックすると、そのコメントに対して、返信コメントを書くことが
でき、スレッドが分散されなくなります。

> 以上の内容に文を仕上げて頂けないでしょうか?

まず、提示されたコードは、B3:B6を選択した状態ですと、
B3:B6をコピーして、B3を先頭にして値貼り付け(「形式を選択して貼り付け」−
「値」)をしているのですが、その後に、B4、B5、B6の値を""に変えていませんか?
その点でなさりたいことと、コードがおかしいように思います。

また、B3:B6をコピーしてではなく、あらかじめコピーしてある範囲をB3:B6に
値貼り付けしたいということでしょうか?
さらに、B3:B6の選択をVBAでしたいということでしょうか?

以下のような感じでいかがでしょうか?
Sub Sample1()
 Dim rngCopy As Range
 Dim rngPaste As Range
 
 If TypeOf Selection Is Range Then
  Set rngCopy = Selection
  On Error Resume Next
  Set rngPaste = Application.InputBox("貼付先セル範囲を選択してください", , , , , , , 8)
  On Error GoTo 0
  If Not rngPaste Is Nothing Then
   MsgBox rngPaste.Address
   rngCopy.Copy
   rngPaste.Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
  Else
   MsgBox "セル範囲を選択しませんでした"
  End If
 Else
  MsgBox "コピー元がセル範囲ではありません"
 End If
End Sub

【46787】Re:範囲指定後マクロを走らす
お礼  杉下 誠  - 07/2/15(木) 13:06 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>横から失礼します。
>
>>回答有難う御座いました。
>
>[46754]のことですね。
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=46754;id=excel
>(先頭4文字は、全角になっているので、半角にしてください。)
>コメントに対するコメントであれば、上記の右上に「返信」というところがある
>のでそれをクリックすると、そのコメントに対して、返信コメントを書くことが
>でき、スレッドが分散されなくなります。
>
>> 以上の内容に文を仕上げて頂けないでしょうか?
>
>まず、提示されたコードは、B3:B6を選択した状態ですと、
>B3:B6をコピーして、B3を先頭にして値貼り付け(「形式を選択して貼り付け」−
>「値」)をしているのですが、その後に、B4、B5、B6の値を""に変えていませんか?
>その点でなさりたいことと、コードがおかしいように思います。
>
>また、B3:B6をコピーしてではなく、あらかじめコピーしてある範囲をB3:B6に
>値貼り付けしたいということでしょうか?
>さらに、B3:B6の選択をVBAでしたいということでしょうか?
>
>以下のような感じでいかがでしょうか?
>Sub Sample1()
> Dim rngCopy As Range
> Dim rngPaste As Range
> 
> If TypeOf Selection Is Range Then
>  Set rngCopy = Selection
>  On Error Resume Next
>  Set rngPaste = Application.InputBox("貼付先セル範囲を選択してください", , , , , , , 8)
>  On Error GoTo 0
>  If Not rngPaste Is Nothing Then
>   MsgBox rngPaste.Address
>   rngCopy.Copy
>   rngPaste.Select
>   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
>     :=False, Transpose:=False
>  Else
>   MsgBox "セル範囲を選択しませんでした"
>  End If
> Else
>  MsgBox "コピー元がセル範囲ではありません"
> End If
>End Sub

初めて投稿しますのでミス有りご迷惑をおかけしております。今仕事の合間でプログラムを走らす事が出来ません。帰宅後トライします。
私が実行したい、と言う事は下記となります。
1)任意の範囲のセル(全て計算文の式)をマウスで範囲指定する(この動作はマクロでなく自分の手)。次からマクロを走らす
2)範囲指定したセル全てを、その同じ箇所のセルに値コピーする(式の前に’が付く)
3)次に一つのセル毎に、その付着した’を除去していく。これにより最後の結果が出る。
具体的には下記の計算式を変化させる物です
 計算文 =CONCATENATE($K$3,$E346,$L$3,F$15)
 結果  新日鉄

6176 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free