Excel VBA質問箱 IV

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

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


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

【81151】Re:フォルダの中のブックを開きたい
発言  Jaka  - 19/12/27(金) 11:14 -

引用なし
パスワード
   ひょっとして、キーボードだけで選択確定とかしてないですかね?
同じような質問が過去にありました。
当時は、試してみて単純にOSとの連携のせいと感じたので、
Doevents を何発か入れたら解決できました。
そのように回答したら、
質問者は、1つで解決できましたとの事だったような。
・ツリー全体表示

【81150】Re:フォルダの中のブックを開きたい
発言  よろずや  - 19/12/27(金) 10:55 -

引用なし
パスワード
   現象を再現できません。

新しい名前(不確定名)のフォルダ名
及び、ファイル名は何ですか?

その場所に別のファイルを置いて、それを開くとどうなりますか?
・ツリー全体表示

【81149】Re:フォルダの中のブックを開きたい
質問  Ken  - 19/12/27(金) 9:03 -

引用なし
パスワード
   ▼よろずや さん:

お世話になります。
説明不足でお手数をお掛けします。

記述内容は
 
  With Application.FileDialog(msoFileDialogOpen)
    .InitialFileName = "\\計画\2019年度"
    If .Show Then
      FileName = .SelectedItems(1)
      Workbooks.Open FileName
    Else
      MsgBox "ファイルを指定してください。"
      End
    End If
  End With

「2019年度」のフォルダの中に月別のbookがありますが
年度が更新すると新しい名前(不確定名)のフォルダが追加され
そのフォルダの中に6ヵ月分のbookが入ります。
普通は「2019年度」からbookを開いて処理するのですが
新しい名前のフォルダを開こうとすると
"Workbooks.Open FileName"のところで
「実行時エラー'1004
Openメソッドは失敗しました」エラーが出てしまいます

新しいフォルダの月別のbookの開き方がわかりません
宜しくお願いします。
・ツリー全体表示

【81148】Re:フォルダの中のブックを開きたい
発言  よろずや  - 19/12/26(木) 19:47 -

引用なし
パスワード
   ▼Ken さん:
>年度が代わるとフォルダの中に更にフォルダが追加され
>そのフォルダを開こうとするとエラーになってしまいます。

どんなマクロを書いてますか?
・ツリー全体表示

【81147】フォルダの中のブックを開きたい
質問  Ken  - 19/12/26(木) 17:15 -

引用なし
パスワード
   いつもお世話になっております。
質問させて下さい。
フォルダの中のブックを開いて処理をするマクロを作っていますが
フォルダのアドレスを指定してダイヤログからブックを選んでいましたが
年度が代わるとフォルダの中に更にフォルダが追加され
そのフォルダを開こうとするとエラーになってしまいます。
この場合どの様に記述したら良いのででしょうか?
・ツリー全体表示

【81146】Re:品名と数値をリンクして表示させたい
発言  Jaka  - 19/12/25(水) 23:48 -

引用なし
パスワード
   ▼てべす さん:。
>VLOOKUP関数等調べてみましたが、VLOOKUPを使うまでも無く簡単な関数で出来ないかと思い質問させて頂きました。

意味が良く解らない。
VLOOKUPが一番簡単だと思うけどね。

=CHOOSE(MATCH(A1,{"イチゴ","リンゴ"},0),50,100)

ひょっとしてこういうやつ?

=IF(A1="イチゴ",50,IF(A1="リンゴ",100,""))
・ツリー全体表示

【81145】品名と数値をリンクして表示させたい
質問  てべす  - 19/12/25(水) 20:42 -

引用なし
パスワード
   当方Excel初心者です。
Excelで見積表を作成する際、ある品名を入力したら、その品名の金額(数値)が表示されるようにしたいです。
例えば、
リンゴが100円
イチゴが50円
と言った場合、「リンゴ」と入力したら、隣のセルに「100円」となる様にしたいです。
VLOOKUP関数等調べてみましたが、VLOOKUPを使うまでも無く簡単な関数で出来ないかと思い質問させて頂きました。
有識者様の御回答お待ちしております。
・ツリー全体表示

【81144】Re:変数内容の保持
発言  γ  - 19/12/17(火) 12:19 -

引用なし
パスワード
   なにか解決したようですが、
Public変数の有効期間は絶対的なものではないという記事を
Microsoftが出しています。
ワークシートに保持するのが確実だと、MS社は言っていますね。
ご参考まで。

ht tp://web.archive.org/web/20090909235324/ht tp://support.microsoft.com/kb/408871/ja

2カ所にスペースを入れているので修正してください。
(セキュリティの関係でhtxxをそのままでは投稿できない決まりのようです)
・ツリー全体表示

【81143】Re:変数内容の保持
お礼  質問者  - 19/12/16(月) 13:28 -

引用なし
パスワード
   私の大きな間違いでした。
パブリック変数の宣言位置の間違いで、変数保持がブック内で保たれていませんでした。
ご回答願った皆様、陳腐な質問ですみませんでした。
・ツリー全体表示

【81142】Re:変数内容の保持
発言  質問者  - 19/12/16(月) 10:03 -

引用なし
パスワード
   やはり、標準モジュールのサブプロシージャーとプライベイトサブプロシージャーの間ではパブリック宣言を行っても変数の供用は行えないのでしょうか?
何か変数の受け渡しを行う方法は無いでしょうか?
・ツリー全体表示

【81141】Re:変数内容の保持
発言  よろずや  - 19/12/14(土) 13:04 -

引用なし
パスワード
   昔のバージョンで「変数宣言の強制」を使っていると
そのような現象がありました。
以来、手打ちで「Option Explicit」と書いてます。
・ツリー全体表示

【81140】Re:変数内容の保持
発言  γ  - 19/12/13(金) 23:29 -

引用なし
パスワード
   Public変数の宣言を読み落としていました。失礼しました。
・ツリー全体表示

【81139】Re:変数内容の保持
発言  Jaka  - 19/12/13(金) 21:20 -

引用なし
パスワード
   Sub mmmaa()
MsgBox 名前
End Sub

を追加して、新規シートをを挿入した後に上を実行するとしっかり
Sheet1 (2)
を保持してました。
by win7 & Excel2007

因みに10分以上は、保持してました。(途中で閉じたためそれ以降不明)
・ツリー全体表示

【81138】Re:変数内容の保持
発言  γ  - 19/12/13(金) 20:59 -

引用なし
パスワード
   Subプロシージャ"シートコピー"を
Functionプロシージャに変更して、
 シートコピー = 名前
として、返り値にすれば情報を戻すことができます。

説明がわかりにくいですね。
ですから、詳細(例えばいつ名前をつけるのか)は不明ですが、
とりあえずの回答をしておきます。
・ツリー全体表示

【81137】変数内容の保持
質問  質問者  - 19/12/13(金) 18:05 -

引用なし
パスワード
   シート1にお決まりの書式や式を書き込んで置いて、シート追加ボタンを押したときに、このシート1のコピーシートと裏の計算のために新しく追加と成るシートのの名前は『シート1のコピーシートの名前+裏』と言う形の名前にしたいのですが、コピーシートの名前を新しく追加になったシートへ上手く引き渡せません。
シート名の変数を上手く引き渡す方法を教えて下さい。

因みに標準モジュールにはシートコピーの命令を以下の様に書いて有ります。

Public 名前 As String
-------------------------
Sub シートコピー()
  Sheets("Sheet1").Select
  Sheets("Sheet1").Copy After:=Sheets(1)
  名前 = ActiveSheet.Name
  MsgBox "戻り前 " & 名前
End Sub

又ワークシートのイベントには

Private Sub Workbook_NewSheet(ByVal Sh As Object)
  
   シートコピー
   MsgBox "戻り後= " & 名前
  
End Sub

此処で『名前』と言う変数はコピーシートを作成した時点ではあるのですが
サブプロシージャーから戻ったイベントの中では無くなっています。
この『名前』変数を保持する方法を教えて下さい。
よろしくお願いします。
・ツリー全体表示

【81136】Re:日付の扱い方のセオリー
お礼  りった  - 19/12/1(日) 22:29 -

引用なし
パスワード
   的確なご回答を頂き有難うございます。
・ツリー全体表示

【81135】Re:日付の扱い方のセオリー
回答  よろずや  - 19/12/1(日) 14:18 -

引用なし
パスワード
   ▼りった さん:
>1.セルの内容をDate型変数に入れる場合
> 'date1 = range1.text とするのが一般的ですか?
  date1 = range1.Value

>2.複数のセルの中から特定の日付のセルを探す場合、どう書くのが一般的ですか?
> for each range1 in worksheet1.Range("売上日一覧")
>  'if range1.xxxx = date1.xxxx then xxxx ← どう書きますか?
   If range1.Value = date1 Then xxxx

>3.セルに日付と時刻が入っていて、日付だけ比較したい場合どうすればいいですか?
> if(format(range1,"yyyy/mm/dd") = format(date1,"yyyy/mm/dd") then
> とするしかないですか?
  If Int(range1.Value) = date1 Then

>4.その他、VBAで日付を扱う際の注意事項等ありましたらご教示頂けますでしょうか?
日付型の実態は、Double型に書式を加味したものです。
日付(シリアル値)は整数ですから、特に問題はありません。
それに対して、時刻は小数点以下の数ですから、2進数の変換誤差があります。
2つの時刻の和と1つの時刻を比較して一致するはずのものが、
そうならないケースがあります。
・ツリー全体表示

【81134】日付の扱い方のセオリー
質問  りった  - 19/12/1(日) 12:21 -

引用なし
パスワード
   今まで日付はyyyymmddの文字列で扱うことが多かったのですが、セルに日付として入力されているファイルを扱うことになりました。
日付の扱い方のセオリーが分からず苦戦しております。ご指導頂けますでしょうか?

1.セルの内容をDate型変数に入れる場合
 date1 = range1.text とするのが一般的ですか?

2.複数のセルの中から特定の日付のセルを探す場合、どう書くのが一般的ですか?
 for each range1 in worksheet1.Range("売上日一覧")
  if range1.xxxx = date1.xxxx then xxxx ← どう書きますか?
 next

3.セルに日付と時刻が入っていて、日付だけ比較したい場合どうすればいいですか?
 if(format(range1,"yyyy/mm/dd") = format(date1,"yyyy/mm/dd") then とするしかないですか?
 (長くて読みづらい。)

4.その他、VBAで日付を扱う際の注意事項等ありましたらご教示頂けますでしょうか?

尚、上記において、変数名は「(型名)1」で記載しています。
・ツリー全体表示

【81133】Re:任意のセルに発生する最終行を調べたい
お礼  おじさんA  - 19/11/29(金) 10:35 -

引用なし
パスワード
   なにかコマンドで一気にできるかと思いましたが
一つずつ調べるのが良いですね。
おかげで解決いたしました。
ありがとうございます
・ツリー全体表示

【81132】Re:任意のセルに発生する最終行を調べたい
発言  ピンク  - 19/11/29(金) 9:44 -

引用なし
パスワード
   参考に
Sub Test()
  Dim LR As Long, i As Long

  For i = 1 To 10
    If LR < Cells(101, i).End(xlUp).Row Then
      LR = Cells(101, i).End(xlUp).Row
    End If
  Next
  MsgBox "最終行は、" & LR
End Sub
・ツリー全体表示

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