エクセルファイルをダイヤログを表示させて名前を付けて保存したいのですが、
以下のコ-ド、' A列の最終行の数字を取得
lastRow = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, 1).End(xlUp).Valueの部分で型が一致しませんとエラーメッセージが出ます。
エラーメッセージを出さずに保存するにはどこを修正すればよいのでしょうか?
どなたかご教示願います。
よろしくお願いいたします。
Sub ファイル保存()
Dim folderPath As String
Dim fileName As String
Dim dateStr As String
Dim c3Content As String
Dim d3Content As String
Dim e3Content As String
Dim f3Content As String
Dim customName As String
Dim lastRow As Long
Dim formattedF3Content As String
Dim formattedCombinedContent As String
' 保存先フォルダのパスをダイアログで選択
folderPath = "C:\Users\t-tai\OneDrive\デスクトップ\図番"
' A列の最終行の数字を取得
lastRow = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, 1).End(xlUp).Value
' 今日の日付を文字列に変換
dateStr = Format(Date, "yyyymmdd")
' 各セルの内容を取得
c3Content = ThisWorkbook.Sheets(1).Range("C3").Value
d3Content = ThisWorkbook.Sheets(1).Range("D3").Value
e3Content = ThisWorkbook.Sheets(1).Range("E3").Value
f3Content = ThisWorkbook.Sheets(1).Range("F3").Value
' F3セルの内容をフォーマット(4桁の内容があるが左から2行目の後に-を挿入)
If Len(f3Content) >= 4 Then
formattedF3Content = Left(f3Content, 2) & "-" & Mid(f3Content, 3, 2)
Else
MsgBox "F3セルの内容が正しくありません。4桁の内容を含めてください。"
Exit Sub
End If
' C3、D3、E3、F3セルの内容をフォーマット
formattedCombinedContent = c3Content & "-" & d3Content & "-" & e3Content & "-" & formattedF3Content
' カスタムファイル名を作成
customName = dateStr & "(" & formattedCombinedContent & ")他" & lastRow & "件"
' ファイルの保存先パスを作成
fileName = folderPath & "\" & customName
' ファイルを保存
With Application.fileDialog(msoFileDialogSaveAs)
.Title = "保存先フォルダを選択してください"
.InitialFileName = fileName & ".xlsm"
.AllowMultiSelect = False
If .Show <> -1 Then
MsgBox "保存先フォルダが選択されませんでした。", vbExclamation
Exit Sub
End If
.Execute
MsgBox "ファイルが保存されました。", vbInformation
End With
End Sub
No.1ベストアンサー
- 回答日時:
>A列の最終行の数字を取得
かかれているコードだと、A列最終行のセルの値(内容) を取得しています。
例えば最終行が50だった場合、lastRowにはセルA50の値が入ります。
それでよい場合は、
lastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Value
で取得できます。
ただ、lastRowは先にlong型が宣言してありますが、その上で型に関するエラーが出ているところを見ると、あなたが取得したいのは、セルの値(内容)ではなく、行数(先の例でいうならば50)ではないかと思いますが、いかがでしょうか?
その場合は、
lastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
となります。
補足として、繰り返しシートオブジェクトである、ThisWorkbook.Sheets(1)を毎回書くのは面倒なので、オブジェクト変数にしておいた方が良いと思います。
Set WS = ThisWorkbook.Sheets(1)
とすればよいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBA一覧取得 再投稿
Visual Basic(VBA)
-
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
-
VBAなくなるの?
Visual Basic(VBA)
-
-
4
vba 削除
Visual Basic(VBA)
-
5
エクセルについて
Visual Basic(VBA)
-
6
エクセルVBAコードで教えて下さい!
Visual Basic(VBA)
-
7
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
8
VBA listBoxから
Visual Basic(VBA)
-
9
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
10
VBAに詳しい方教えてください。
Visual Basic(VBA)
-
11
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
12
VBAで大量のファイルをシート名ごとに転記やらいろいろしたい!
Visual Basic(VBA)
-
13
VBA 複数のエクセルから一つのエクセルに貼り付ける
Visual Basic(VBA)
-
14
Vba SelStart、SelLen教えてください教えてください
Visual Basic(VBA)
-
15
VBA レジストリの値の読み方について教えてください
Visual Basic(VBA)
-
16
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
17
VBA指定行削除
Visual Basic(VBA)
-
18
時間短縮のために、テキストファイルの入出力をメモリを使って出来ないですか?
Visual Basic(VBA)
-
19
Excel 範囲指定スクショについて Excelで範囲指定してスクリーンショットする機能がありますが
Visual Basic(VBA)
-
20
ExcelVBAマクロで実行した時の疑問
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでファイルの最終更新...
-
Excel VBAでほかのアプリケーシ...
-
CImageのファイル名を指定して保存
-
Excel VBAで作成したマクロをxl...
-
読み取り専用ファイルを上書き...
-
エクセルで「名前を付けて保存...
-
EXCEL/VBA:WORDファイルの上書...
-
VBScriptで日本語が変です
-
VBAでPDF作成をしたあと、指定...
-
htmlから取り込んだ を消...
-
EXCEL VBAでカンマ区切りCSVフ...
-
vbaでIEの名前を付けて保存(A)...
-
CSSが見られない
-
VBAで、強制保存してブックを閉...
-
印刷と保存の仕方をVBAマクロの...
-
エクセル:マクロ:保存時に連...
-
ソースコードがぐちゃぐちゃ
-
パワーポイントで作成した資料...
-
ページ 巡回 指定テキストの...
-
ファイルのダウンロード保存先...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでファイルの最終更新...
-
Excel VBAでほかのアプリケーシ...
-
読み取り専用ファイルを上書き...
-
Pivot table で集計されたデー...
-
Excel VBAで作成したマクロをxl...
-
VBAで、強制保存してブックを閉...
-
vbaでIEの名前を付けて保存(A)...
-
エクセルで「名前を付けて保存...
-
VB.NETでEXCELファイルを開き、...
-
VBScriptで日本語が変です
-
AccessVBAでレポートをPDFで出力
-
エクセル:マクロ:保存時に連...
-
ExcelVBAでデスクトップのPATH...
-
VB6.0でエクセル保存する時の保...
-
VBA メモ帳の上書き保存がしたい
-
ファイルのダウンロード保存先...
-
コードエディタの緑色の部分
-
コマンドプロンプトでデスクト...
-
FileSearchが使えなくなり困っ...
-
htmlから取り込んだ を消...
おすすめ情報