Excel VBA質問箱 IV

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

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


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

【43661】空白のセルに自動で貼り付け 加藤 06/10/22(日) 10:53 回答[未読]
【43662】Re:空白のセルに自動で貼り付け かみちゃん 06/10/22(日) 11:04 発言[未読]
【43693】Re:空白のセルに自動で貼り付け Help me!! 06/10/23(月) 11:09 質問[未読]
【43696】Re:空白のセルに自動で貼り付け かみちゃん 06/10/23(月) 12:00 発言[未読]
【43730】Re:空白のセルに自動で貼り付け Help me!! 06/10/24(火) 8:14 お礼[未読]
【43718】Re:空白のセルに自動で貼り付け Kein 06/10/23(月) 16:35 発言[未読]
【43731】Re:空白のセルに自動で貼り付け Help me!! 06/10/24(火) 8:33 お礼[未読]
【43738】Re:空白のセルに自動で貼り付け Kein 06/10/24(火) 13:38 発言[未読]

【43661】空白のセルに自動で貼り付け
回答  加藤  - 06/10/22(日) 10:53 -

引用なし
パスワード
   現状下記のようになっています

セル        セル    セル 

1####     ###    ###
 2空白      ###    ###
 3空白      ###    ###
4####     ###    ###
5         ###    ###
6         ###     ###

2が空白の場合1の値を3が空白の場合1値をを4が空白でないならそのままで5が空白なら4の値を...といったかたちでフロ-制御したいのですが誰かわかる方いますか教えてください。

【43662】Re:空白のセルに自動で貼り付け
発言  かみちゃん  - 06/10/22(日) 11:04 -

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

> 2が空白の場合1の値を3が空白の場合1値をを4が空白でないならそのままで5が
> 空白なら4の値を...といったかたちでフロー制御したい

以下のSample1、Sample2のどちらでもできます。
なお、フロー制御が目的ならば、Sample2のコードは、おすすめしません。
あと、どちらのコードも、A列の最終行の値より下には、転記しませんので、注意
してください(最大行まで転記するわけではないと思いますので)

Sub Sample1()
 Dim LastCell As Range
 Dim c As Range
 Dim valData
 
 Set LastCell = Cells(Rows.Count, 1).End(xlUp)
 
 For Each c In Range("A1", LastCell)
  If c.Value = "" Then
   c.Value = valData
  Else
   valData = c.Value
  End If
 Next
 MsgBox "終了!!"
End Sub

Sub Sample2()
 Dim LastCell As Range
 Dim c As Range
 
 Set LastCell = Cells(Rows.Count, 1).End(xlUp)
 For Each c In Range("A1", LastCell).SpecialCells(xlCellTypeConstants, 3)
  If c.Address <> LastCell.Address Then
   Range(c, c.End(xlDown).Offset(-1)).Value = c.Value
  End If
 Next
 MsgBox "終了!!"
End Sub

【43693】Re:空白のセルに自動で貼り付け
質問  Help me!!  - 06/10/23(月) 11:09 -

引用なし
パスワード
   ▼かみちゃん さん:
横からすいません。
私もこのマクロが欲しくて検索したらこれがひっかかりました。

ですが、対象となる列(この場合("A1",lastcell)ですが)をマクロ実行前に指定する方法はありませんか?

A列であればAとinputboxか何かに入れるなど・・・
いろいろ試行錯誤しましたが、うまく動いてくれません。

よろしくお願いします。

【43696】Re:空白のセルに自動で貼り付け
発言  かみちゃん  - 06/10/23(月) 12:00 -

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

>私もこのマクロが欲しくて検索したらこれがひっかかりました。

[#43665]で一応解決済みのようなのですが。

> 対象となる列(この場合("A1",LastCell)ですが)をマクロ実行前に指定する方法はありませんか?

以下のような感じでできます。
For 〜 Next の内側の記述は、変更ありません。
InputBoxが表示されたら、対象とする列を選択してください。
なお、選択した一番左の1列だけを処理します。(複数列には未対応)

Sub Sample1_1()
 Dim rngColumns As Range
 Dim LastCell As Range
 Dim c As Range
 Dim valData
 
 On Error Resume Next
 Set rngColumns = Application.InputBox("対象列を選択してください", Type:=8)
 If Err.Number <> 0 Then Exit Sub
 On Error GoTo 0
 
 Set LastCell = Cells(Rows.Count, rngColumns.Columns(1).Column).End(xlUp)

 For Each c In Range(Cells(1, LastCell.Column), LastCell)
  If c.Value = "" Then
   c.Value = valData
  Else
   valData = c.Value
  End If
 Next
 MsgBox "終了!!"
End Sub

Sub Sample2_1()
 Dim rngColumns As Range
 Dim LastCell As Range
 Dim c As Range

 On Error Resume Next
 Set rngColumns = Application.InputBox("対象列を選択してください", Type:=8)
 If Err.Number <> 0 Then Exit Sub
 On Error GoTo 0
 
 Set LastCell = Cells(Rows.Count, rngColumns.Columns(1).Column).End(xlUp)
 For Each c In Range(Cells(1, LastCell.Column), LastCell).SpecialCells(xlCellTypeConstants, 3)
  If c.Address <> LastCell.Address Then
   Range(c, c.End(xlDown).Offset(-1)).Value = c.Value
  End If
 Next
 MsgBox "終了!!"
End Sub

【43718】Re:空白のセルに自動で貼り付け
発言  Kein  - 06/10/23(月) 16:35 -

引用なし
パスワード
   それはたぶん43566の質問と同じシートで使いたい、ということでしょうね。
ならば、ダブルクリックイベントでなく右クリックイベントを使って、
先に私が提示したコードのように Target.Column を取得すれば出来ますよ。

【43730】Re:空白のセルに自動で貼り付け
お礼  Help me!!  - 06/10/24(火) 8:14 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます!!
本当に自分が欲しかった物が作れました!!

【43731】Re:空白のセルに自動で貼り付け
お礼  Help me!!  - 06/10/24(火) 8:33 -

引用なし
パスワード
   ▼Kein さん:
ご回答ありがとうございます!!
そういうやり方もあるのですね。
keinさんはinputboxよりクリックにこだわりますよね?
それは何か理由があるのでしょうか?
ただ、ユーザーが使いやすいという理由でしょうか?
それとも、プログラム的にinputboxは使わないほうがいいのでしょうか?

【43738】Re:空白のセルに自動で貼り付け
発言  Kein  - 06/10/24(火) 13:38 -

引用なし
パスワード
   列を指定するための方法としては、クリックの方が "間違いを防ぎやすいから" です。
InputBoxには、あらゆる文字や数値を入力できるわけだから、それにふさわしい用途
があるはずです。従って
>プログラム的にinputboxは使わないほうがいい
などという問題ではなく、適材適所を考えて使いましょう、ということです。
まぁ、そんな言い方は曖昧で理解しずらいかも知れませんが、Excel・VBAのベテラン
なら、ピンとくるものがあります。行や列、単一のセルの指定には、あきらかに
InputBoxよりクリックイベントが向いている、と感じるわけです。

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