アプリ版:「スタンプのみでお礼する」機能のリリースについて

資料を毎日作成しており、シート請求の中のBE列に登録日がデータとしてあります。
現行はBE2りで値には2019/04/08と入っているデータをリプレイス関数を使って
2019_04_08と置き換えてファイルの名前でデータを保存する作業をしております。

Sheets("請求").Select
trkb = Replace(expression:=Range("BE2").Value, Find:="/", Replace:="_", Start:=1)
hzk = Right(trkb, 5)
BE列の最終行の登録日の値を求めてリプレイス関数を用いて上記の通り置き換えが出来る
方法をご存知の方おられましたら回答戴きたいのでお願い致します。

A 回答 (5件)

何故にReplace関数?普通はこうすると思うのですが・・・。



Sub sample()
Dim hzk As Variant
hzk = Worksheets("請求").Cells(Rows.Count, "BE").End(xlUp).Value
hzk = Format(hzk, "mm_dd")
MsgBox hzk
End Sub
    • good
    • 1
この回答へのお礼

丁寧な説明ありがとうございます。
参考にさせて戴きました。
勉強になりました。
返信が遅くなって申し訳ございませんでした。

お礼日時:2019/04/16 10:19

こんにちは。



そのコードでは、もしかしたらうまくいかないかもしれません。
理由は、セルに、シリアル値が入っている場合は、標準書式で日付を取得してしまいます。
Range("BE2").Value 最終行の日付が取得できても、.Valueプロパティでは違います。
Replace 関数を使う限りは、.Text プロパティでないとうまくいきません。

'//
Sub DateReplace()
  Dim c As Range
  Dim trkb As String, hzk As String
  With Worksheets("請求")
  Set c = .Cells(Rows.Count, "BE").End(xlUp)
  If IsDate(c.Text) Then
  trkb = Replace(c.Text, "/", "_")  '●
  hzk = Right(trkb, 5)
  Else
  MsgBox "最後の行は日付ではありません。", vbExclamation
  End If
  End With
End Sub

しかし、Valueプロパティでもできる方法は、
●の部分を
hzk =Format(c.Value, "MM_DD")
というように、Format関数を使います。試してみてください。
    • good
    • 1
この回答へのお礼

丁寧な説明ありがとうございます。
返信が遅くなり申し訳ございませんでした。

お礼日時:2019/04/16 10:17

おっと、失礼、


此も 示しておかないと。


http://officetanaka.net/excel/vba/tips/tips130.htm
    • good
    • 1
この回答へのお礼

URL送って戴きありがとうございました。
今後、参考にさせて戴きます。
返信遅くなって申し訳ございませんでした。

お礼日時:2019/04/16 10:17

.Range((Rows.Count, 1).End(xlUp)



Rose.Countは、
環境に 関わらず、
最大行数を 返します、

ですので、
.Range((Rows.Count, 1)は、
其のExcelでの A列における、
最下行を アドレッシングします。


又、
.End(xlUp)構文は、
データ連続性を 下から、
精査し、
変化点を 示します。
    • good
    • 1
この回答へのお礼

丁寧な説明ありがとうございました。
返信が遅くなって申し訳ございませんでした。

お礼日時:2019/04/16 10:17

一番下の行から上方向へ、入力されているセルを検索。



これがスタンダードな最終行の値を検索する方法ですね。

ちょっと検索すれば出てくるような一般的な手法です。
たぶんいろんな方々が図解入りのサイトで解説していると思いますので調べてみてはいかがでしょう。

・・・
手動でこれを行う時は、
 1.BE行全体を選択する。(BE1セルが選択されている)
 2.Shift+Enterキー で一つ前のセルを選択する。(最終行のセルが選択されれる)
 3.最終行のセルが空白でなければそのセルの値を得て終了。
 4.空白でなければ、Ctrl+↑キー で入力されているセルの一つ下のセルまでジャンプ。
 5.↑キー で値のあるセルを選択しそのセルの値を得て終了。
になります。
    • good
    • 1
この回答へのお礼

手動でマクロの記録を使い参考にしました。
回答ありがとうございました。
返信遅くなって申し訳ございませんでした。

お礼日時:2019/04/16 10:17

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