Excel VBA質問箱 IV

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

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


201 / 3841 ページ ←次へ | 前へ→

【78433】Match関数の使い方
質問  tomi  - 16/9/22(木) 12:00 -

引用なし
パスワード
   よろしくお願いします
For i=1 to BB  
 PL = Workbooks("原料配合表.xlsb").Sheets(i).Range("A1000").End(xlUp).Row
 On Error Resume Next
 AA = Application.WorksheetFunction.Match(ZRK, Workbooks("配合.xlsb").Sheets(i).Range(Cells(3, 6), Cells(PL, 6)), 0)
Next
 Range(Cells(3, 6), Cells(PL, 6))のところに計算式に
 =+A48&" "&B48&" "&C48&" "&D48がはいっているためデータが読み出しが
 できません。計算式がなく入力したものは検出できます。
 上記のMatchのプログラムのどのようになおしたらよいか教えてください。
・ツリー全体表示

【78432】Re:日付時刻の入力判定
お礼  rao  - 16/9/19(月) 8:16 -

引用なし
パスワード
   ありがとうございました。
・ツリー全体表示

【78431】Re:日付時刻の入力判定
発言  γ  - 16/9/19(月) 6:40 -

引用なし
パスワード
   二つにわければ、35:00 といった入力は、
入力規則なり条件付き書式なりで警告を出せます。
それは所詮小数点以下を持つ数値なんだから、
1 以上だったらアウトにすればいい。
・ツリー全体表示

【78430】Re:日付時刻の入力判定
お礼  rao  - 16/9/19(月) 6:24 -

引用なし
パスワード
   確かに、日付と時刻を同じセルに入力するの、
前から面倒だと思っていました。
別セルに入力して、後で結合した方が、ラクですね。

ありがとうございました。
・ツリー全体表示

【78429】Re:日付時刻の入力判定
発言  γ  - 16/9/18(日) 23:55 -

引用なし
パスワード
   >(2)打ち込みミスなので自動変換されてokだされても困るのです。
> 自動変換させずに判定する方法はないでしょうか?

そんなこと言われても私はマイクロソフトの人間じゃないから
自動変換の責任を取らされても困るんですよ。知らんよ、そんなこと。

いったん文字列書式のセルに入力させてから、
マクロで移すんじゃないですか?

でも、深夜残業などで、25時なんていうのを使う会社もありますよ。
それと、日にちと時間を一つのセルに入れるのは、話を難しくするだけだと思います。
実態を踏まえて、全体の構想を良く練ってください。
・ツリー全体表示

【78428】Re:日付時刻の入力判定
質問  rao  - 16/9/18(日) 22:37 -

引用なし
パスワード
   お返事ありがとうございます。

(1) 空白なしは、isnumericで回避できそうですね。
ありがとうございます。
(2)打ち込みミスなので自動変換されてokだされても困るのです。
自動変換させずに判定する方法はないでしょうか?
(3)他人から貰ったファイルで、
元は昔のエクセルで作ったのだとおもいます。
気を利かせる機能がうまく働かなかったようです。
新しいバージョンで一度全てクリアすると、
気を利かせてくれました。

宜しくお願いします。
・ツリー全体表示

【78427】Re:日付時刻の入力判定
発言  γ  - 16/9/18(日) 21:55 -

引用なし
パスワード
   (1)
2016/9/1816:17:00  はIsNumericでFalseが返るし、
(2)
yyyy/mm/ss半角空白hh:mm:ssの書式のセルに
2016/9/18 35:17:00 を入力すると、は、
2016/9/19 11:17:00と自動変換されます。
(3)
全角を入れても気を利かせて半角になりませんか?

何をどのタイミングでチェックするのか。
そのあたりの内容をよく整理してください。
・ツリー全体表示

【78426】Re:日付時刻の入力判定
質問  rao  - 16/9/18(日) 16:35 -

引用なし
パスワード
   返信ありがとうございます。
説明不足ですいません。

打ち込み入力された年月日時分秒が
半角でyyyy/mm/ss半角空白hh:mm:ssの書式であり、
かつ日付時刻を示す数字であるか、判定したいのです。

たとえば
2016/9/1816:17:00  半角空白なし  や
2016/9/18 35:17:00 35時という時刻はない は
エラーにしたいのです。

isnumericですと、全角でもokになってしまいます。
まず全角を強制的に半角化し、strconv(cell(i.j),vbnarrow)
半角空白を探して、
空白前でisdate、空白後でistimeで
それぞれ判定するしかないのかなと思ったのですが。

もう少し賢い方法はないものかと思い、質問しました。
宜しくお願いします。
・ツリー全体表示

【78425】Re:範囲内のセルを左詰め移動するマクロ
お礼  ひでとし E-MAIL  - 16/9/18(日) 16:06 -

引用なし
パスワード
   ヤフー知恵袋の方に貼り付けさせてもらいました。
ありがとうございます。
・ツリー全体表示

【78424】Re:日付時刻の入力判定
発言  γ  - 16/9/18(日) 14:52 -

引用なし
パスワード
   もう少し説明してください。

正しい入力とは何ですか?
・特定の範囲が定まっているのですか?
・それとも、文字が入っていない実数ならOKということですか?
後者ならIsNumeric関数で判断すればよいでしょう。
・ツリー全体表示

【78423】Re:範囲内のセルを左詰め移動するマクロ
発言  β  - 16/9/18(日) 13:59 -

引用なし
パスワード
   ▼ひでとし さん:

知恵袋のほうは、どこそこで回答があって解決した。
ちなみに回答コードは、こうだったということで、ひでとしさんがクローズしてください。

私がアップしたコードを貼り付けてもらってもかまいません。
・ツリー全体表示

【78422】日付時刻の入力判定
質問  rao  - 16/9/18(日) 12:21 -

引用なし
パスワード
   初めて質問します。

日付と時刻を入力する目的で、yyyy/mm/dd hh:mm:ss
の書式で設定されているセルがあります。
正しく入力されているかどうかvbaで判定したいのですが、
いい判定方法はありますか?
isdate、istimeを使うといいと思うのですが。

宜しくお願いします。
・ツリー全体表示

【78421】Re:範囲内のセルを左詰め移動するマクロ
お礼  ひでとし E-MAIL  - 16/9/18(日) 12:12 -

引用なし
パスワード
   さらに素晴らしいマクロです。有り難うございました。
実は、ヤフー知恵袋にも質問しました。まだ回答は付いていませんが、もし時間があればヤフーでも回答してもらえませんか。ヤフーを見ている人にも共有してほしいです。もし無理ならば、ヤフーでの質問は取り下げようと思います。
毎回手作業で1時間掛かるところを1秒で処理してくれます。大変助かりました。
・ツリー全体表示

【78420】Re:範囲内のセルを左詰め移動するマクロ
発言  β  - 16/9/18(日) 11:44 -

引用なし
パスワード
   ▼ひでとし さん:

作業シートを使わない、まともな処理(?)案。

Sub Sample2()
  Dim r As Range
  Dim ad As String
  Dim w As Variant
  Dim n As Long
  
  n = Selection.Columns.Count
  
  For Each r In Selection.Rows
    If WorksheetFunction.CountA(r) > 0 Then
      ad = r.Address
      w = Filter(Evaluate("IF(" & ad & "="""",CHAR(2)," & ad & ")"), Chr(2), False)
      ReDim Preserve w(0 To n - 1)
      r.Value = w
    End If
  Next
  
End Sub
・ツリー全体表示

【78418】Re:範囲内のセルを左詰め移動するマクロ
発言  β  - 16/9/18(日) 10:54 -

引用なし
パスワード
   ▼ひでとし さん:

インチキ(?)で、作業シート "work" を使います。
なお、削除そのものはループなしでOKです。
また、選択領域に空白セルがなかった場合のエラー回避をしています。

(作業シートなしで処理するなら、配列に取り込み、配列内でループ処理をして書き戻すということもできます)


Sub Sample()
  
  With Sheets("work")
    .Cells.Clear
    Selection.Copy .Range("A1")
    On Error Resume Next
    .Range("A1", .UsedRange).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
    On Error GoTo 0
    .Range("A1", .UsedRange).Copy Selection
  End With

End Sub
・ツリー全体表示

【78417】Re:範囲内のセルを左詰め移動するマクロ
発言  ひでとし E-MAIL  - 16/9/18(日) 10:15 -

引用なし
パスワード
   今度は列のアルファベットがいつの間にか全角になっておりまたずれている。
もーいや!
・ツリー全体表示

【78416】Re:範囲内のセルを左詰め移動するマクロ
発言  ひでとし E-MAIL  - 16/9/18(日) 10:11 -

引用なし
パスワード
   質問をアップしたら列表示がずれていたのでもう一度アップします。
申し訳ありません。
処理前のデータ
0ABCDEFGHIJKLMN
1*** * * * ** *
2 * ** ** * *
3* * * ** * **
4 **  **  **

処理後のデータ
0ABCDEFGHIJKLMN
1*** * * * ** *
2 *****  * *
3* ****  * **
4 **  **  **
・ツリー全体表示

【78415】範囲内のセルを左詰め移動するマクロ
質問  ひでとし E-MAIL  - 16/9/18(日) 10:07 -

引用なし
パスワード
   初心者で他のHPも調べてみたのですが、わからないので教えて下さい。

処理前のデータ
ABCDEFGHIJKLMN
1*** * * * ** *
2 * ** ** * *
3* * * ** * **
4 **  **  **

処理後のデータ
ABCDEFGHIJKLMN
1*** * * * ** *
2 *****  * *
3* ****  * **
4 **  **  **

処理したいのは次の通りです。
マウスで任意の範囲を選びます。上の例ではD2:J3。その範囲内の空白セルを詰めて左詰めしたいのです。

Sub test()
Dim r As Range
For Each r In Selection.Cells
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete shift:=xlToLeft
Next r
End Sub

を作ってみたのですが、左寄せ削除のため指定範囲外の行全体が左に動きます。範囲内のみを左詰めするマクロを教えて下さい。よろしくお願いします。
・ツリー全体表示

【78414】Re:エクセルからの削除、リネーム後の保存
回答  Todd  - 16/9/14(水) 5:53 -

引用なし
パスワード
   ▼β さん:

ご対応有難う御座います。
一度、試してみます!

不明な点があれば、再度ご質問させて下さい。

以上
・ツリー全体表示

【78413】Re:ダブルクォーテーション置換
発言  β  - 16/9/13(火) 21:54 -

引用なし
パスワード
   ▼はてなな さん:

いま、コードをちらっと眺めましたら、変換後の クォーテーションは全角にしたかったようですね。

では、私がアップしたコードの中の

   Range("A1").Value = Replace(s, """", "''")
   Range("A2").Value = "'" & Replace(s, """", "''")

これは

   Range("A1").Value = Replace(s, """", "’’")
   Range("A2").Value = "'" & Replace(s, """", "’’")

ですね。
・ツリー全体表示

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