トップページtech
1002コメント374KB

Excel VBA 質問スレ Part45 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2017/01/03(火) 02:51:16.56ID:9Y8iTik6
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part44
http://echo.2ch.net/test/read.cgi/tech/1479421482/


※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
0039デフォルトの名無しさん2017/01/08(日) 22:49:26.11ID:KINgQhrq
>>38
条件を変えればいいと思う

A列(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B列が1行上の値と違う場合、
1行上に行を挿入して、その行に「果物」と入れたい

A行(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B列に入力があり、1行上の値が空白である場合、
1行上に行を挿入して、その行に「果物」と入れたい
0040デフォルトの名無しさん2017/01/08(日) 23:15:02.67ID:LSCp0tLP
>>39
なるほど、そういう発想もありますね。
でもそうなると、どういうコードになるのでしょうか??(・・?)
0041デフォルトの名無しさん2017/01/09(月) 00:15:41.73ID:t+szxcoe
すごい、エスパーがいるな
ちょっと日本語が意味わからないからアドバイス出来ないわ…
0042デフォルトの名無しさん2017/01/09(月) 00:55:08.08ID:4/AW5Uyc
>>36
A列は全て 「食物」が入力されているのよね

B列にどのように入ってるの?

>B行に入る値
>・みかん
>・バナナ

これ以外は無い(すなわち空セル)って事?
コード見ると「りんご」 ってあるみたいだけど???

んで どのような結果を お望み?
0043デフォルトの名無しさん2017/01/09(月) 00:58:47.84ID:5IQR8Haa
それって、

分類1
商品1
商品2
分類2
商品3
商品4

みたいなフォーマットなの?
もしそうなら、それは神エクセルだから、

>フォーマットがもう決まってしまっているので

そこをどうにかして、こう直したほうがいいと思うけど。

分類名 商品名
分類1  商品1
分類2  商品2
0044デフォルトの名無しさん2017/01/09(月) 01:00:35.84ID:5IQR8Haa
違う、こうか。

分類名 商品名
分類1  商品1
分類1  商品2
分類2  商品3
分類2  商品4
0045デフォルトの名無しさん2017/01/09(月) 02:56:04.77ID:JlqgPD3/
すみません、割り込みなのですが簡単な質問なので失礼します((+_+))


コマンドボタンを1回クリックするごとにラベルに100ごと加算される物を
作りたいのですが、↓だと、あたりまえですが1度クリックしかできません。


Private Sub CommandButton1_Click()
x = 100
Label1.Caption = x

End Sub
0046デフォルトの名無しさん2017/01/09(月) 03:13:17.25ID:4/AW5Uyc
>>45
コマンドボタンとラベルは ユーザフォーム上なの? シート上なの?

どちらでも良い方法として

ラベルのプロパティ開いて Captionを 0 にしておく
その上で
Private Sub CommandButton1_Click()
 Label1.Caption = Label1.Caption + 100
End Sub
0047デフォルトの名無しさん2017/01/09(月) 03:24:27.93ID:JlqgPD3/
>>46
ユーザーフォーム上です!ありがとうございました、無事できました!
0048デフォルトの名無しさん2017/01/09(月) 04:07:15.85ID:JlqgPD3/
何度もすみません、45の者です。
45の続きで、ラベル1の値ーラベル2の値=差の値をラベル3に表示する
計算機をユーザーフォーム上に作りたいと思っています。
しかし以下ではエラー「一致する型がありません」とでます。
なぜなのでしょうか(T_T)


Private Sub CommandButton3_Click()
Label1.Caption = x '投入した金額
Label2.Caption = y '選択した金額

k = x - y

Label3.Caption = k

End Sub
-----------------
Private Sub CommandButton1_Click()
 Label1.Caption = Label1.Caption + 100 ←ここにエラ―がでる
End Sub
------------------
Private Sub CommandButton2_Click()
 Label2.Caption = Label2.Caption + 50
End Sub
0049デフォルトの名無しさん2017/01/09(月) 04:23:14.16ID:4/AW5Uyc
>>48

>>46 を良く嫁
以上
0050デフォルトの名無しさん2017/01/09(月) 10:17:57.42ID:EPA1tS/m
>>48
引き算するとこのx,yの代入逆だろ
x=ラベルキャプションってしないとなんも価入らんぞ
あとちゃんと変数は宣言してる?
0051デフォルトの名無しさん2017/01/09(月) 10:41:01.31ID:HU0Vv46x
>>46
>ラベルのプロパティ開いて Captionを 0 にしておく

は前提として、プロパティを直接の演算の対象にするとダメなことはまれに経験したことがある
理由はわからないけど
そういう時は、変数をかまして回避した。たとえば、

Private Sub CommandButton1_Click()
Dim label1_c As Integer
label1_c = Label1.Caption
label1_c = label1_c + 100
 Label1.Caption = label1_c
End Sub
0052デフォルトの名無しさん2017/01/09(月) 13:48:59.41ID:O0/XMIqD
シート1の表(2次元領域)をシート2やシート3に一行に横一列にコピーしたいのですが、
一旦シート1の表の値を変数ATAI(i)に入れて、シート2や3にコピーしてます。
また別の方法で直でシート1.COPY シート2でもコピーしてみました。

両方ともコピーするのが2万個ぐらいあるのですが、処理に3分ぐらいかかります。
もっと早くする方法はありますか?
0053デフォルトの名無しさん2017/01/09(月) 13:50:27.27ID:JSUf7hDg
>>12
エラーで中断したら再計算しないけどな
0054デフォルトの名無しさん2017/01/09(月) 14:36:04.75ID:SVvcq0Ni
下記のコードでObjectにするとSheet1のaを呼び出せるのですが
WSだとメソッドまたはデータメンバーが見つかりませんになってしまいます
wsの方か厳密のような気がするのですがObjectで正解なんでしょうか?

ThisWorkbook
Dim ws As Worksheet ' Objectにすると成功
Set ws = Sheets("Sheet1")

Call ws.a() ' エラー


Sheet1
Sub a()
End Sub
0055デフォルトの名無しさん2017/01/09(月) 14:36:23.83ID:EPA1tS/m
>>52
Dim rng as Range
set rng = Range(元データ開始セル,元データ終了セル)
Range(貼り付け先開始セル,貼り付け先終了セル) = rng
って感じでやると早くない?
もしかしたらvariant型の変数にした方が早いかもしれんけど
OfficeTANAKAに高速化テクニックって感じで載ってるよ
0056デフォルトの名無しさん2017/01/09(月) 14:37:11.58ID:EPA1tS/m
>>53
あのな?「作り終わったら」ってどういう意味かわかるか?
0057デフォルトの名無しさん2017/01/09(月) 14:51:56.79ID:4FVlGxEy
>>54
目的に合致してれば
問題ないです
0058デフォルトの名無しさん2017/01/09(月) 15:00:52.77ID:cjVtQucR
>>54
Sheet1.NameがSheet1じゃないのかも
0059542017/01/09(月) 15:30:22.93ID:SVvcq0Ni
もう一個謎が

Workbook_SheetChange(ByVal ws As Object, ...

Call ws.a() ' エラー
Call Sheets(ws.Name).a() ' 成功

となり訳が分かりません...

>>57
理解できてないとなにか気持ち悪いです
>>58
同じにしてあります;;

セルやらシートがあるのでvbaってjsやpyより難しい気がします
basicの構文も癖があるし・・
0060デフォルトの名無しさん2017/01/09(月) 16:49:38.66ID:dWF3ZE3B
>basicの構文も癖があるし・・
www
0061デフォルトの名無しさん2017/01/09(月) 16:53:01.88ID:6xa3UP1L
プロシージャをcallで呼び出すのと何も付けないで呼び出すのとでは何が違うのでしょうか?
後者だと参照渡しになりませんでしたが。
0062デフォルトの名無しさん2017/01/09(月) 16:53:39.75ID:I9s0ZByk
>>59
他の人が追試出来るように端折らないコード乗せて。
0063デフォルトの名無しさん2017/01/09(月) 16:57:16.33ID:6xa3UP1L
もうわかったのでいいですすいません
0064デフォルトの名無しさん2017/01/09(月) 17:21:48.98ID:EPA1tS/m
>>63
解決したならそれをのせろや
0065デフォルトの名無しさん2017/01/09(月) 17:22:57.78ID:SVvcq0Ni
>>62
新規の空ファイルで

ThisWorkbook
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Call sh.test
'Call Sheets(sh.Name).test
End Sub

Sheet1
Sub test()
MsgBox "テスト"
End Sub
0066デフォルトの名無しさん2017/01/09(月) 18:15:14.29ID:Z/GXP5pv
>>65
sh.Name="Sheet1"
を確認しないとダメな気がする
0067デフォルトの名無しさん2017/01/09(月) 18:21:35.53ID:Z/GXP5pv
>>66
動的にイベントが発生するまでシートを確定できないからコンパイルでエラーになるみたいだよ
0068デフォルトの名無しさん2017/01/09(月) 18:23:08.68ID:Z/GXP5pv
オブジェクト名でSheet1.testとすればコンパイルも通るし実行時エラーも出ない
0069デフォルトの名無しさん2017/01/09(月) 18:39:16.88ID:SVvcq0Ni
>>66-68
ありがとうございますm(__)m
VBAはコンパイラだったのですね
納得しました
0070デフォルトの名無しさん2017/01/09(月) 18:56:01.43ID:jLw81RF+
>>61
厳密にいうと参照渡しになっている。
変数aをカッコで囲んで(a)とすると、aのコピーが一時オブジェクトとして作られ、それがプロシージャに渡されるので、
元の変数aそのものはプロシージャに渡らない。

プロシージャ a

Call プロシージャ(a)
が等価で、

プロシージャ (a)

Call プロシージャ((a))
と等価になる
0071デフォルトの名無しさん2017/01/09(月) 19:32:58.81ID:6xa3UP1L
>>70
カッコにそういう意味があったとは・・・!
わかりやすかったです、ありがとうございました。
0072デフォルトの名無しさん2017/01/09(月) 22:18:09.21ID:vYvrwg8z
>VBAはコンパイラだったのですね

えっ
0073デフォルトの名無しさん2017/01/09(月) 22:32:30.71ID:o7+xqhMd
>>42-44
分かりづらく失礼しました。
途中のりんごは不要です。
また、B列には他の食べ物が入りますが、ここでは果物に分類されないので、省略しました。

Sub 入力
一番上 = 5
一番下 = Cells(Row.Count,1).End(xlup).Row
For Cnt = 一番上 To 一番下
If Cells(Cnt,1)="食物"
If Cells(Cnt-1,2)<> cells(Cnt,2) then
If cells(Cnt,2)="みかん" or Cells (Cnt, 2) ="バナナ" Then
Range(Cells(Cnt,1),Cells(Cnt,2)).Insert
End If
End If
End If
Next Cnt
0074デフォルトの名無しさん2017/01/09(月) 22:32:55.53ID:o7+xqhMd
で、希望するフォーマットとしては

 果物
食物バナナ
食物みかん
食物その他(仮)



としたいわけです。ところが、自分の作ったシートだと

 果物
食物バナナ
 果物
食物みかん
食物


となってしまうわけです。これで分かりやすくなったでしょうか・・・
0075デフォルトの名無しさん2017/01/09(月) 22:40:49.82ID:LQfxW/qY
馬鹿ばっかで頭が痛くなるスレだ
0076デフォルトの名無しさん2017/01/09(月) 22:45:04.08ID:O0/XMIqD
>>55 ありがとう。 結局いろいろ試しましたが、セルに関数貼りつけました・・・・。
手動でセルに関数貼りつけたほうが早かったです・・・。
0077デフォルトの名無しさん2017/01/09(月) 23:29:23.35ID:4/AW5Uyc
>>74
やりたい事こんな感じ?
※なお 区別する種類が多いとこの手法は結構大変なので
考え直さないとだけど

Sub 入力()
一番上 = 5
一番下 = Cells(Rows.Count, 1).End(xlUp).Row

'下から上に処理してく
For cnt = 一番下 To 一番上 Step -1

 'cnt行の品名
 品名1 = Cells(cnt, 2).Value
 'cnt行の一つ上の品名
 If cnt <> 一番上 Then
  品名2 = Cells(cnt - 1, 2).Value
  Else
  品名2 = ""
 End If

 '行挿入
 If 品名1 = "みかん" Or 品名1 = "バナナ" Then
 If 品名2 <> "みかん" And 品名2 <> "バナナ" Then
  Range(Cells(cnt, 1), Cells(cnt, 2)).Insert
  Cells(cnt, 2) = "果物"
 End If
 End If
Next
End Sub
0078デフォルトの名無しさん2017/01/09(月) 23:32:51.18ID:cjVtQucR
>>72
メニューにコンパイルってあるけど
0079デフォルトの名無しさん2017/01/09(月) 23:43:50.55ID:dVuv1+mu
>>76
んー
二万件あっても直接レンジでやり取りすればそんな時間かからんと思うけどな
まあいいや、解決したなら乙だ
0080デフォルトの名無しさん2017/01/09(月) 23:47:23.09ID:SFPxoHKZ
>>74
本当はVBA必要ないのに、
神エクセルを作ることによって、
VBAが必要になってしまっているのではないか?

果物・・・食べ物の種類
バナナ・・・果物
みかん・・・果物

項目以外で、違うものを同じ列に入れる?
0081デフォルトの名無しさん2017/01/10(火) 00:09:16.68ID:hjeg5IZ9
食物が列にあって果物を見出しにする謎を解決しないと先に進まないんじゃないか
0082デフォルトの名無しさん2017/01/10(火) 10:38:11.72ID:yHxqwlUe
>>18
大変遅くなりました。
>「元の画像より少し小さいシェイプを作成して取得する」
はなかなかの妙案だと思いましたが、関数化してループさせた場合処理速度に問題があったので、
既存のプロパティを自力で補正するように書き換えてみました。
Excelは左上をセルの左上に合わせて配置しても、画像の右下のグリップで拡大した場合、
低確率で.Topと.Leftの値が微妙に変化する(たとえば C3に置いた写真の.Top=37.5が37.4999...に変わってしまう。)
ようなので、何パターンか検証した結果、小数点以下第三位を四捨五入で正確に出る事がわかりました。

手動配置している場合に余裕を持たせられるようデフォルト値付きの省略可能引数にしています。

Sub TestGetShapeToRange()
Dim SP As Shape
For Each SP In Selection.Parent.Shapes
If SP.Name = Selection.Name Then Exit For
Next
Range(GetTopLeftCell(SP), GetBottomRightCell(SP)).Select
End Sub

長すぎと怒られたので 次レスへ
0083デフォルトの名無しさん2017/01/10(火) 10:38:44.28ID:yHxqwlUe
>>82 の続き
'Shape.TopLeftCellの誤差補正後の左上セルを取得する関数
Public Function GetTopLeftCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetTopLeftCell = SP.TopLeftCell
If GetTopLeftCell.Offset(1).Top <= Round(SP.Top, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(1)
End If
If GetTopLeftCell.Offset(, 1).Left <= Round(SP.Left, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(, 1)
End If
End Function

'Shape.BottomRightCellの誤差補正後の右下セルを取得する関数
Public Function GetBottomRightCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetBottomRightCell = SP.BottomRightCell
If GetBottomRightCell.Top >= Round(SP.Top + SP.Height, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(-1)
End If
If GetBottomRightCell.Left >= Round(SP.Left + SP.Width, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(, -1)
End If
End Function

以上、ご報告まで。
0084デフォルトの名無しさん2017/01/10(火) 12:02:57.55ID:yHxqwlUe
連投すいません。次の質問です。

以下のようなマクロがあります。
1.非モーダルのユーザーフォーム(fm)が常駐
2.ユーザーが任意で複数の画像を選択
3.fm上のボタンをユーザーがクリックして下記のような処理を実行
For each obj in Selection
obj.cut
ActiveSheet.PasteSpecial Format:="図 (JPEG)"
Next
すると、最後にPasteしたShapeを選択した状態でマクロが終了します。

ESCを押して選択を解除するような操作をVBAで再現するにはどうしたら良いのでしょうか。

・マクロの記録では、ESCでShapeの解除は記録されませんでした。
・Application.SendKeys "{ESC}"を試してみたのですが、反応がありませんでした。
・ユーザーフォームにフォーカスが取られているのかと思いActiveWorkbook.ActivateやActiveWindow.Activateを入れたのですが無反応でした。

強引な解決策を考えましたが、もっとスマートな方法が無いかと探しています。
・終了後に適当なRangeをSelectしてからScrollRow/ScrollColumnして元の位置に戻す。
・シートのSelectionイベントで直前までに選択されたRangeを保持する。

ご教示のほどよろしくお願い致します。
0085デフォルトの名無しさん2017/01/10(火) 15:45:40.53ID:8VGVrhFD
>>84
君の思う スマートな方法が どんなものだかは分らんが

どこかのセルを選択するのが一番簡単だと思う
適当なセルだとスクロールしてしまうのがイヤなら

・選択されてるShapeの右上のセルを選択
・画面上の左上のセルを選択
とかでいいんじゃね?
0086852017/01/10(火) 15:47:43.23ID:8VGVrhFD
間違った
× ・選択されてるShapeの右上のセルを選択
○ ・選択されてるShapeの左上のセルを選択
0087デフォルトの名無しさん2017/01/10(火) 17:40:05.82ID:yHxqwlUe
>>85
とりあえずは、表示画面の左上セルをSelectするようにしたいと思います。
>スマートな方法
いわゆるobj.Unselect()メソッドとか、obj.Select(false)のような選択解除専用の機能は無いか。という事です。
Excel VBAって思わぬオブジェクトに実装されていたりするので・・・
0088デフォルトの名無しさん2017/01/11(水) 08:57:05.13ID:J0hUcFsW
マクロでなく操作で非選択って出来る?
結局は別のものを選択してるよね
0089デフォルトの名無しさん2017/01/11(水) 09:00:21.43ID:v+irSj+y
>>87
プロパティ的なもんはオブジェクトブラウザかなんかで調べれば出てくるんじゃないの
0090デフォルトの名無しさん2017/01/11(水) 12:03:53.06ID:tc1gJPs0
自動で名前を付けて保存したくて、いろいろ調べて形にはなったのですが

A1に日付が2017/01/11と入ってる場合
そのセルを引用したらスラッシュも入ってしまい保存の時にいちいち消すのに困っています。
保存の時にだけスラッシュを消す方法有りませんか?
0091デフォルトの名無しさん2017/01/11(水) 12:12:47.07ID:p4WB0UzK
>>90
format
0092デフォルトの名無しさん2017/01/11(水) 12:31:15.82ID:tc1gJPs0
InitialFilename:=Format(Range("A1"), "yyyymmdd")

このような形でいいのでしょうか?
0093デフォルトの名無しさん2017/01/11(水) 12:34:16.38ID:I7PY9KYr
うちの会社ではほぼ全PCをシンクライアントにしてからというものの
ExcelVBAのマクロを保存してた「PERSONAL.XLSB」が使えなくなりました。
シンクライアントでは「PERSONAL.XLSB」に相当する機能を使用するにはどうしますか?

あとこれが本題なのですが
OutlookとWordも、それらのVBAをデフォルト的個人ファイルに保存して高頻度で使用していました。
特にOutlookのVBAでは便利なマクロを作っていました。
シンクライアントでもそれらの機能を使用するにはどうしますか?
0094デフォルトの名無しさん2017/01/11(水) 12:35:59.27ID:p4WB0UzK
指定の位置に日付が入ってるのであればそれでよいはず
0095デフォルトの名無しさん2017/01/11(水) 12:38:17.27ID:tc1gJPs0
>>94
ご丁寧にありがとうございます!
0096デフォルトの名無しさん2017/01/11(水) 12:48:03.28ID:p4WB0UzK
>>93
単純に移行すれば使えると思う
以前使ってたpersonal.xlsbを所定の位置に配置すればできるはず
0097デフォルトの名無しさん2017/01/11(水) 12:50:26.58ID:I7PY9KYr
>>96
シンクライアントでは普通の方法ではCドライブが見えないんです。
別の方法で見つけてそこに入れても、次の日にPCを起動したときにそのファイルは消えてしまっているから
わざわざファイルを移動する方法では無駄になってしまうんです。毎日する必要になるから面倒で。
0098デフォルトの名無しさん2017/01/11(水) 12:53:38.45ID:xxQxfc5N
>>97
会社のシステム担当者に聞けばいいよ
0099デフォルトの名無しさん2017/01/11(水) 13:08:46.29ID:uU4tfKci
シンクライアントは勝手なことをできないように導入する目的もあるので
自分なりのカスタマイズはあきらめるしかない場合がほとんど
0100デフォルトの名無しさん2017/01/11(水) 13:08:59.59ID:I7PY9KYr
>>98
どこにその部署があるかわからないし
勝手にツール作らないでくださいといわれてそれを禁止されるリスクもあるから
自分の力で解決したいのですが。
0101デフォルトの名無しさん2017/01/11(水) 13:15:26.49ID:I7PY9KYr
Windowsのスタートアップもシンクライアントになって以来使えません(毎回PC起動時にはここは空になります)。
どうすればシンクライアントでもスタートアップ機能を使えるでしょうか?
0102デフォルトの名無しさん2017/01/11(水) 13:37:35.00ID:f6yusNGM
>>101
管理者側で許可設定してもらわない限り、シンクラでカスタマイズは無理
そして許可はまず下りない
あきらめろ
0103デフォルトの名無しさん2017/01/11(水) 13:38:29.71ID:uU4tfKci
完全にVBA無関係じゃん
スレチ
0104デフォルトの名無しさん2017/01/11(水) 13:38:35.27ID:QIrTsKqr
>>101
板違い Windows板かパソコン一般板かPC初心者板へ
0105デフォルトの名無しさん2017/01/11(水) 13:45:44.75ID:1bci6XNy
>>92
聞く前にやりなよそのくらいって思うんだが
1から10まで聞かないとなにもできないの?
0106デフォルトの名無しさん2017/01/11(水) 15:28:17.61ID:qQgm92T6
ここはthinクライアントでCドライブに何か入れたいみたいな馬鹿が来るようなところだから
0107デフォルトの名無しさん2017/01/11(水) 18:57:51.34ID:dcC69ZSQ
エクセルのメニュー、アイコン、リボン、などを初期設定状態に戻す方法はありませんか。

すみません初心者的
0108デフォルトの名無しさん2017/01/11(水) 19:28:32.74ID:uU4tfKci
>>107
リセットボタンあるよ
http://www.helpforest.com/excel/1_book/img/ex010044_1.png
0109デフォルトの名無しさん2017/01/11(水) 20:14:53.64ID:anvEc3zp
レジストリの該当部を削除すれば(それかリネームすれば)元に戻るよ。
と思ったらリセットボタンあるのか。そちらの方がいいですね。
0110デフォルトの名無しさん2017/01/11(水) 20:23:03.75ID:1FwZUW9V
VBAのスレなんだからこんなの教えんなよ…
0111デフォルトの名無しさん2017/01/11(水) 22:54:27.23ID:QIrTsKqr
スレチ質問もスレチ回答も荒らし
0112デフォルトの名無しさん2017/01/11(水) 23:23:15.83ID:JMe0AUgT
>>90
まだこういう勘違いしている人がいるんだな・・
A1には2017/01/11と入ってるわけじゃない
42746という数字が入ってるだけ
0113デフォルトの名無しさん2017/01/12(木) 05:41:59.32ID:nMoQZoqt
>>109
なんだこのアホな回答
0114デフォルトの名無しさん2017/01/12(木) 07:13:34.10ID:0A4eRqXF
>>112
アスペ乙
0115デフォルトの名無しさん2017/01/12(木) 08:41:15.75ID:Lhyp+MOo
>>112
[A1].Valueが 2017/01/11 なのです。
0116デフォルトの名無しさん2017/01/12(木) 09:48:23.99ID:Rj8+4pg/
[A1].Textじゃなくて?
0117デフォルトの名無しさん2017/01/12(木) 11:56:09.07ID:Cc5O9IhJ
お前の会社のことはお前の会社でなんとかしろよ
0118デフォルトの名無しさん2017/01/12(木) 12:29:26.83ID:Lhyp+MOo
>>116
表示形式が yyyy/m/d だと Text は 2017/1/11
0119デフォルトの名無しさん2017/01/12(木) 12:45:45.01ID:6ppTquF5
[A1].Value2と[A1].Formatが正常に定義されてるなら
あとはFormat関数で好きに取り出せるんじゃ無いかな
0120デフォルトの名無しさん2017/01/12(木) 20:01:33.08ID:6fAXJ0U3
例え元のデータが何であっても「日付として解釈出来る形式」ならDate型に入れれば変換してくれるだろ。
0121デフォルトの名無しさん2017/01/12(木) 20:07:33.99ID:yR99XFwh
で?っていう
0122デフォルトの名無しさん2017/01/12(木) 20:39:27.21ID:UE8PLb8+
日付が数字で入ってるかどうかなんて質問に関係ないよな
0123デフォルトの名無しさん2017/01/12(木) 20:42:03.60ID:eBGwra53
>>122
型によって処理が変わると思うのだが
0124デフォルトの名無しさん2017/01/12(木) 20:46:28.71ID:UiBlAwbG
>>123
Date型の変数に入れれば日付になるじゃん
0125デフォルトの名無しさん2017/01/12(木) 20:54:08.91ID:yR99XFwh
不勉強で申し訳ないが世に文字列以外のファイル名を採用したファイルシステムがあるのなら是非教えて頂きたい
0126デフォルトの名無しさん2017/01/12(木) 21:08:16.17ID:eBGwra53
>>124
例えば
2017/1/12
20170112
1/12/2017
シリアル値
全部同じになるっけ?
0127デフォルトの名無しさん2017/01/12(木) 21:22:08.35ID:UiBlAwbG
>>125
誰がそのまま使うって言ってんの
fileName = baseName & cStr(dte)
みたいな使い方するわけでしょ
>>126
知らんけど表示形式が違うだけならなるんじゃねえの
0128デフォルトの名無しさん2017/01/12(木) 22:11:57.92ID:Mdtl8esZ
じゃ無いかな くれるだろ 思う 知らんけど じゃねえの
もはや、妄想・空想・予想のスレッドに成り果てたか
盆、暮れ、正月ぐらいせめて少しは頭を休ませてろ
0129デフォルトの名無しさん2017/01/12(木) 22:24:16.56ID:URc2UNFw
あいてるセルにファイル名を生成する関数つくって、そのセル参照させればいいだけじゃないのけ?

保存場所どこにするかによってはスペースは使えないが。
0130デフォルトの名無しさん2017/01/12(木) 22:26:45.06ID:VnxSw5mv
>>95で解決した話題がまだ続いてる
0131デフォルトの名無しさん2017/01/12(木) 22:40:44.11ID:URc2UNFw
>>130
そうなんだ・・・しつれいした
0132デフォルトの名無しさん2017/01/12(木) 23:01:38.74ID:Rj8+4pg/
>>125
大型機だとファイルには整数のID番号が付いてるだけでファイル名とは切り離されて管理されてるやつがあるな
だから同じ名前のファイルがいくつも作れてしまったりする
0133デフォルトの名無しさん2017/01/13(金) 12:38:07.17ID:XGAIFzZi
Sheet1     Sheet2
A    B    A    B
東京  5    大阪   ○
大阪  4    福岡   ×
福岡  8    東京   ○

Sheet1
A    B   C
東京  5   ○
大阪  4   ○
福岡  8   ×

Sheet1のA列を軸にSheet2のB列の値を抽出する場合、
For〜 'Sheet1A列を順番に
 For〜 'Sheet2A列を順番に
  IF〜 'Sheet1C列に代入
 Next
Next
もしくは
For〜 'Sheet1A列を順番に
 Find.Row 'Sheet1A列の値を検索
 'Sheet1C列に代入
Next
どちらのほうが処理速度が向上しますか?
0134デフォルトの名無しさん2017/01/13(金) 12:39:52.43ID:xEiCBlzV
>>133
vlookup
0135デフォルトの名無しさん2017/01/13(金) 12:43:08.31ID:5NHpz1Ta
>>134
vlookup→配列に入れてif分岐→findの順番の早さ
findが遅いのは確か
0136デフォルトの名無しさん2017/01/13(金) 12:58:05.11ID:dokIsM4J
>>133
シートでsql
0137デフォルトの名無しさん2017/01/13(金) 13:02:40.73ID:5NHpz1Ta
findが遅いって言ってもセルを直接参照して処理するよりは早い
0138デフォルトの名無しさん2017/01/13(金) 13:15:44.54ID:HxNmVQ/n
>>137
ってことは、後者のほうが速いということでしょうか?
■ このスレッドは過去ログ倉庫に格納されています