!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part69
https://mevius.5ch.net/test/read.cgi/tech/1607786543/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part70
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ b6da-6NWR)
2021/03/18(木) 22:08:43.71ID:jtngtgXU0566デフォルトの名無しさん (ワッチョイ 2701-3faj)
2021/04/30(金) 21:20:31.83ID:zq+mlYyf0567デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 21:52:12.56ID:BfTXTUZEM >>565
元々文字列は内容変わったら領域確保し直したりするから内部的に参照持つのが普通
ByVal は文字列を複製して渡すしByRefは内部的な参照への参照を渡す
何の矛盾もないよ
中途半端に内部的な参照を気にしてもしょうがないよ
元々文字列は内容変わったら領域確保し直したりするから内部的に参照持つのが普通
ByVal は文字列を複製して渡すしByRefは内部的な参照への参照を渡す
何の矛盾もないよ
中途半端に内部的な参照を気にしてもしょうがないよ
568デフォルトの名無しさん (ワッチョイ df4f-U2UV)
2021/04/30(金) 21:55:44.24ID:lUzIA11U0 >>565
え?そうだっけ?
確か配列は参照渡ししか出来ないから
Variant型に突っ込んで渡して
値型のものを渡すようにするんじゃなかったっけ?
もっともそれでも参照型のものは参照が渡されるけど。
え?そうだっけ?
確か配列は参照渡ししか出来ないから
Variant型に突っ込んで渡して
値型のものを渡すようにするんじゃなかったっけ?
もっともそれでも参照型のものは参照が渡されるけど。
569デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/04/30(金) 22:00:13.74ID:HAcSh5oY0 誰か教えてほしいんですが、
数字を単純に足すんじゃなくて=+100+200というふうに増えた数字を全部数式に残していくように一つのセルに入れていくやり方ってありますか?
例えば別のシートに100 200 350とあったら
記録用のシートのセルに=100+200+350と飛ばしたいです。
セルの中身見た時に650となってるのではなくて=100+200+350と表示されてほしい
数字を単純に足すんじゃなくて=+100+200というふうに増えた数字を全部数式に残していくように一つのセルに入れていくやり方ってありますか?
例えば別のシートに100 200 350とあったら
記録用のシートのセルに=100+200+350と飛ばしたいです。
セルの中身見た時に650となってるのではなくて=100+200+350と表示されてほしい
570デフォルトの名無しさん (ワッチョイ df4f-U2UV)
2021/04/30(金) 22:02:58.83ID:lUzIA11U0 >>569
単純にCStrで数字を文字列に変換して繋げばいいだけと思うけどそういう意味じゃない?
単純にCStrで数字を文字列に変換して繋げばいいだけと思うけどそういう意味じゃない?
571デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/04/30(金) 23:05:04.91ID:ftoQG8Lta572デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/04/30(金) 23:07:22.57ID:ftoQG8Lta >>569
これも式を表示するモードがあったはず
これも式を表示するモードがあったはず
573デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 23:09:00.86ID:XMOC9xEV0 >>557
sheet1モジュールに書く
シート名はs1とs2にしてるのでテキトーに変えて
Private Sub Worksheet_Change(ByVal Target As Range)
If _
Target.Address <> "$B$1" _
Or Not (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 2).Value
main2 = Cells(1, 1).Value
If (Int(main) - (main)) = 0 Then
Sheets("s2").Cells(1, 3) = main
Else
Sheets("s2").Cells(1, 3) = Int(main2)
End If
End Sub
sheet1モジュールに書く
シート名はs1とs2にしてるのでテキトーに変えて
Private Sub Worksheet_Change(ByVal Target As Range)
If _
Target.Address <> "$B$1" _
Or Not (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 2).Value
main2 = Cells(1, 1).Value
If (Int(main) - (main)) = 0 Then
Sheets("s2").Cells(1, 3) = main
Else
Sheets("s2").Cells(1, 3) = Int(main2)
End If
End Sub
574デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 23:13:44.15ID:XMOC9xEV0 >>569
地味にやるしかない
Sub foo()
Cells(3, 1).Formula = "=" & Cells(1, 1).Value & "+" & Cells(2, 1)
End Sub
量が多いならfornextかなんかで処理すると良い
地味にやるしかない
Sub foo()
Cells(3, 1).Formula = "=" & Cells(1, 1).Value & "+" & Cells(2, 1)
End Sub
量が多いならfornextかなんかで処理すると良い
575デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 23:13:57.10ID:XMOC9xEV0 joinほしい
576デフォルトの名無しさん (スップ Sdff-PTVc)
2021/04/30(金) 23:21:20.34ID:W9vsivKyd577デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/04/30(金) 23:40:08.54ID:HAcSh5oY0578デフォルトの名無しさん (ワッチョイ 7fda-OedE)
2021/05/01(土) 00:46:43.32ID:zFFwGDhV0 CONCATがある
579デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 05:48:25.12ID:1uksgnWZM >>575
Joinあるやろ
手元にExcelないから試してないけど
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:C1" ).Value), "+")
でいけないかな
Joinあるやろ
手元にExcelないから試してないけど
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:C1" ).Value), "+")
でいけないかな
580579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 06:04:07.19ID:jbHbRAMYM よく見たら行/列間違えてるわ
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:A3" ).Value), "+")
だな
Excel 2019ならVBA使わずに
C1: =TEXTJOIN("+", TRUE, "=", A1:A3)
でいけるかも
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:A3" ).Value), "+")
だな
Excel 2019ならVBA使わずに
C1: =TEXTJOIN("+", TRUE, "=", A1:A3)
でいけるかも
581デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 10:06:17.84ID:v351dbwI0 >>580
例えば元表
コード 200 金額 200 5月
コード 150 金額 300 4月
コード 200 金額 500 5月
コード 150 金額 400 6月
コード 200 金額 50 5月
と並んでたとして、飛ばしたい表に
コード200に一致した場合は=200+500+50
コード150 の4月は=300
みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
うまくいかなくて、、
例えば元表
コード 200 金額 200 5月
コード 150 金額 300 4月
コード 200 金額 500 5月
コード 150 金額 400 6月
コード 200 金額 50 5月
と並んでたとして、飛ばしたい表に
コード200に一致した場合は=200+500+50
コード150 の4月は=300
みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
うまくいかなくて、、
582デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/01(土) 10:22:39.67ID:orU8r25h0 >>580
別の質問だけど、
Application.Transpose
って
WorksheetFunction.Transpose
の事?
ApplicationってついてたらWorksheetFunctionは省略できるの?
別の質問だけど、
Application.Transpose
って
WorksheetFunction.Transpose
の事?
ApplicationってついてたらWorksheetFunctionは省略できるの?
583デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/01(土) 13:16:18.88ID:eT9ez6fta こういう処理はピボットの得意分野だとおもう
ピボットスレにも聞いてみたらとうかな
ピボットスレにも聞いてみたらとうかな
584デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/01(土) 13:18:22.06ID:+awRLs9V0 ピボットスレってあったっけ?
585デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:20:57.76ID:GvoaCTGBM >>582
互換、環境の違い……
互換、環境の違い……
586デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/01(土) 13:30:58.50ID:eT9ez6fta ピボットを設定して
たて列を月
よこ列を単価
合計は "値で合計"にする <はじめは個数で合計>になってる
いちばん間違えやすいところ
たて列を月
よこ列を単価
合計は "値で合計"にする <はじめは個数で合計>になってる
いちばん間違えやすいところ
587デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/01(土) 14:28:03.48ID:FxNutXRP0 >>573
> >>557
> sheet1モジュールに書く
> シート名はs1とs2にしてるのでテキトーに変えて
>
>
> Private Sub Worksheet_Change(ByVal Target As Range)
>
> If _
> Target.Address <> "$B$1" _
> Or Not (IsNumeric(Target)) _
> Then
> Exit Sub
> End If
>
> main = Cells(1, 2).Value
> main2 = Cells(1, 1).Value
>
> If (Int(main) - (main)) = 0 Then
> Sheets("s2").Cells(1, 3) = main
> Else
> Sheets("s2").Cells(1, 3) = Int(main2)
> End If
>
> End Sub
あらためて
ありがとうございます。
整数なら無視できるようになりました!
あとは Sheets("s2").Cells(1, 3) にSheets("s1").Cells(1, 2).Valueが整数じゃなければSheets("s1").Cells(1, 1).Valueが入れば完璧です
ちょっと自分でググってみます!もしできないようならまた質問させてください
> >>557
> sheet1モジュールに書く
> シート名はs1とs2にしてるのでテキトーに変えて
>
>
> Private Sub Worksheet_Change(ByVal Target As Range)
>
> If _
> Target.Address <> "$B$1" _
> Or Not (IsNumeric(Target)) _
> Then
> Exit Sub
> End If
>
> main = Cells(1, 2).Value
> main2 = Cells(1, 1).Value
>
> If (Int(main) - (main)) = 0 Then
> Sheets("s2").Cells(1, 3) = main
> Else
> Sheets("s2").Cells(1, 3) = Int(main2)
> End If
>
> End Sub
あらためて
ありがとうございます。
整数なら無視できるようになりました!
あとは Sheets("s2").Cells(1, 3) にSheets("s1").Cells(1, 2).Valueが整数じゃなければSheets("s1").Cells(1, 1).Valueが入れば完璧です
ちょっと自分でググってみます!もしできないようならまた質問させてください
588デフォルトの名無しさん (ワッチョイ dfda-PU2s)
2021/05/01(土) 15:00:22.43ID:FcpS+0KE0 >>584
誰か建ててくれると期待してはや数年。。。
誰か建ててくれると期待してはや数年。。。
589デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/01(土) 15:05:23.71ID:+awRLs9V0 PowerQueryスレは建ったんだけど、
https://mevius.5ch.net/test/read.cgi/bsoft/1571540368/
ピボットスレ、建ててみる?
先日、総合相談スレでPowerPivot絡みの質問はあったが。
https://mevius.5ch.net/test/read.cgi/bsoft/1571540368/
ピボットスレ、建ててみる?
先日、総合相談スレでPowerPivot絡みの質問はあったが。
590デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 15:15:39.62ID:v351dbwI0591デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/01(土) 16:16:38.30ID:eT9ez6fta あーそうかも
やはりピボットスレが立つまで待ちますか
やはりピボットスレが立つまで待ちますか
592デフォルトの名無しさん (ワッチョイ dfb3-3tTE)
2021/05/01(土) 16:42:05.48ID:AMC1YaHy0 >>581
それは、たとえば、元表にB1&countif(B$1:B1,B1)みたいな作業列を作って
飛ばしたい表に、iferror(index(D:D,match(作業列,コード&column()+1,0)),"")
みたいな数式を貼り付けるのではだめですか?
1つのセルに、数式として入っている必要性が、あるのですか?
それは、たとえば、元表にB1&countif(B$1:B1,B1)みたいな作業列を作って
飛ばしたい表に、iferror(index(D:D,match(作業列,コード&column()+1,0)),"")
みたいな数式を貼り付けるのではだめですか?
1つのセルに、数式として入っている必要性が、あるのですか?
593デフォルトの名無しさん (ワッチョイ dfb3-3tTE)
2021/05/01(土) 17:05:58.85ID:AMC1YaHy0 >>592修正、matchの書式も違うし
月も必要なので、B1&E1 を作業列Fに、count(F$1:F1,F1)を作業列Gに入れて
飛ばしたい表のA列はコード、B列は月、C列以降にiferror(index(元表!$D:$D,match($A1&$B1&column()-2,元表!$F:$F,0)),"")
こんな感じではだめですか?
月も必要なので、B1&E1 を作業列Fに、count(F$1:F1,F1)を作業列Gに入れて
飛ばしたい表のA列はコード、B列は月、C列以降にiferror(index(元表!$D:$D,match($A1&$B1&column()-2,元表!$F:$F,0)),"")
こんな感じではだめですか?
594デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 17:25:51.43ID:v351dbwI0 >>592
合計なら楽なんですが、どうしても=+で数字を積み立てないとダメなんですよね、、
だから数式では解決できない気がします
vbaでやるなら配列に詰め込んで最後に結合させるのかなあとか思ってるんですがなかなかいいコードが思い浮かばない、、
合計なら楽なんですが、どうしても=+で数字を積み立てないとダメなんですよね、、
だから数式では解決できない気がします
vbaでやるなら配列に詰め込んで最後に結合させるのかなあとか思ってるんですがなかなかいいコードが思い浮かばない、、
595デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 17:29:33.26ID:v351dbwI0 >>593
ちなみに飛ばしたい表のB列は月というか
月
コード 〜
みたいな形になってて、月は横軸の大項目としてしか存在してないんですよね
色々厄介な作りになってまして、、
ちなみに飛ばしたい表のB列は月というか
月
コード 〜
みたいな形になってて、月は横軸の大項目としてしか存在してないんですよね
色々厄介な作りになってまして、、
596デフォルトの名無しさん (ワッチョイ a78e-MiMN)
2021/05/01(土) 17:33:09.92ID:d9MtRRCh0 知能に障害がある人ばかり質問するようになった感じ
597デフォルトの名無しさん (ワッチョイ df79-2I0v)
2021/05/01(土) 17:49:10.58ID:MA8kI4AW0 コロナ自粛でGW中だから暇なんだよ
暇な人に相手して欲しいんだよ
暇な人に相手して欲しいんだよ
598デフォルトの名無しさん (ワッチョイ dfda-PU2s)
2021/05/01(土) 18:04:53.11ID:QtACG4Vk0 知恵袋でやれば良いと思う
599579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 18:07:44.96ID:4GddeLjJM >>581
> みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
月が同じってどこと同じなの?
コードのようにどこかで指定するってこと?
とりあえずコードがA列、金額がB列、月がC列に入っているとして
Dim 元表 As Sheet: Set 元表 = Range("A1:C10")
Dim 金額() As String: ReDim 金額(元表.Row To 元表.Row + 元表.Rows.Count - 1)
Dim 書込行 As Long: 書込行 = LBound(金額)
Dim 行 As Long
For 行 = LBound(金額) To UBound(金額)
If Cells(行, "A").Value = コード And Cells(行, "C").Value = 月 Then
金額(書込行) = Cells(行, "B").Value
書込行 = 書込行 + 1
End If
Next
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
Range("D1").Formula = "=" & Join("+",
金額)
みたいな感じでいけると思う
>582
ごめん、テキトーにググって書いてるから間違えてるみたいやな
Application.WorksheetFunction.Transpose
にしといて
> みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
月が同じってどこと同じなの?
コードのようにどこかで指定するってこと?
とりあえずコードがA列、金額がB列、月がC列に入っているとして
Dim 元表 As Sheet: Set 元表 = Range("A1:C10")
Dim 金額() As String: ReDim 金額(元表.Row To 元表.Row + 元表.Rows.Count - 1)
Dim 書込行 As Long: 書込行 = LBound(金額)
Dim 行 As Long
For 行 = LBound(金額) To UBound(金額)
If Cells(行, "A").Value = コード And Cells(行, "C").Value = 月 Then
金額(書込行) = Cells(行, "B").Value
書込行 = 書込行 + 1
End If
Next
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
Range("D1").Formula = "=" & Join("+",
金額)
みたいな感じでいけると思う
>582
ごめん、テキトーにググって書いてるから間違えてるみたいやな
Application.WorksheetFunction.Transpose
にしといて
600デフォルトの名無しさん (ワッチョイ 075f-2Bcu)
2021/05/01(土) 18:46:01.00ID:z941MlAe0 >>599
最初の型はSheetじゃなくてRangeじゃね
あとこの人の言ってるのは普通に文字列としてValueプロパティに式を書き込めばいいような気がするけど
上で語ってる人ってあんま教えに来ないよな
最初の型はSheetじゃなくてRangeじゃね
あとこの人の言ってるのは普通に文字列としてValueプロパティに式を書き込めばいいような気がするけど
上で語ってる人ってあんま教えに来ないよな
601デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 18:57:24.37ID:v351dbwI0 >>599
試しにやろうとしたら最終行が型不一致でエラーになりました・・
試しにやろうとしたら最終行が型不一致でエラーになりました・・
602579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 19:57:34.66ID:jFabojDWM603デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 20:06:26.75ID:v351dbwI0604デフォルトの名無しさん (ワントンキン MMbf-Pk3V)
2021/05/01(土) 22:02:09.39ID:ueS9oUA3M >>603
自分で考えることくらいしろや、ゆとり
自分で考えることくらいしろや、ゆとり
605デフォルトの名無しさん (ワッチョイ 8701-I0Kk)
2021/05/01(土) 22:18:52.25ID:T1b9C9NF0 dim hako() as variant
redim hako(ここはデータ数を格納)
for i = 0 to 回数
hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
next
こんな感じで配列の中にセルの文字入れて行こうとするとエラーになるんですが原因分かる人居たら教えてください
便宜上cellの位置は1,1にしてますけど実際は縦が動いていきます
redim hako(ここはデータ数を格納)
for i = 0 to 回数
hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
next
こんな感じで配列の中にセルの文字入れて行こうとするとエラーになるんですが原因分かる人居たら教えてください
便宜上cellの位置は1,1にしてますけど実際は縦が動いていきます
606デフォルトの名無しさん (ワッチョイ df8f-OedE)
2021/05/01(土) 22:41:00.37ID:/V6pM9G50 >>541
> これ、要するにString型変数の値は参照値って事?
> 察してはいたけどByval xxx$って嘘じゃん
逆にC知ってると、文字列がプリミティブってのにものすごい
違和感があるよ。「ああ、内部で変換してんだな。そういうものだと
思っておこう」と、自分を納得させる。
> これ、要するにString型変数の値は参照値って事?
> 察してはいたけどByval xxx$って嘘じゃん
逆にC知ってると、文字列がプリミティブってのにものすごい
違和感があるよ。「ああ、内部で変換してんだな。そういうものだと
思っておこう」と、自分を納得させる。
607579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 22:45:28.00ID:4GddeLjJM >>603
条件に合うものがないと ReDim 金額(1 To 0) の様になってエラーになる
VBAではReDimで空の配列は作れないので条件に合うものがない場合を場合分けして処理するしかない
例えば条件に合うものがない場合はD1を空にするなら最後の2行を
Dim 式 As String
If LBound(金額) < 書込行 <= Then
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
式 = Join("+", 金額)
Else
式 = """"""
End If
Range("D1").Formula = "=" & 式
とかにすればいい
条件に合うものがないと ReDim 金額(1 To 0) の様になってエラーになる
VBAではReDimで空の配列は作れないので条件に合うものがない場合を場合分けして処理するしかない
例えば条件に合うものがない場合はD1を空にするなら最後の2行を
Dim 式 As String
If LBound(金額) < 書込行 <= Then
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
式 = Join("+", 金額)
Else
式 = """"""
End If
Range("D1").Formula = "=" & 式
とかにすればいい
608デフォルトの名無しさん (ワッチョイ df4f-U2UV)
2021/05/01(土) 22:53:14.11ID:1m8BqwmN0 >>605
>hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
の、
Worksheets("Sheet1").Cells(1,1)が指してる先が数字でないなんてオチはないよね?
>hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
の、
Worksheets("Sheet1").Cells(1,1)が指してる先が数字でないなんてオチはないよね?
609デフォルトの名無しさん (ワッチョイ 8701-I0Kk)
2021/05/01(土) 23:00:47.42ID:T1b9C9NF0610デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 23:06:25.35ID:v351dbwI0 >>607
すごい!
ちょっと動くようになりました。
二行目のif文の<=って消していいですかね?
消さないとエラーになってしまったので
ただ、式=join("+",金額)のところで型が一致しないエラーになりました
すごい!
ちょっと動くようになりました。
二行目のif文の<=って消していいですかね?
消さないとエラーになってしまったので
ただ、式=join("+",金額)のところで型が一致しないエラーになりました
611デフォルトの名無しさん (ワッチョイ a78e-MiMN)
2021/05/01(土) 23:16:54.43ID:d9MtRRCh0 いつものあいつ確定
612579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 23:44:05.17ID:ll+wAnFJM613デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 23:54:50.36ID:v351dbwI0614デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/02(日) 09:42:00.36ID:1V5M4ibt0 >>590
PowerPivotでDAX関数使えば出来るかも。
PowerPivotでDAX関数使えば出来るかも。
615デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/02(日) 09:58:00.77ID:1V5M4ibt0616デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/02(日) 10:03:52.79ID:uM4tl5TR0 いきなり宣伝てアンタ
617579 (テテンテンテン MM8f-m/Zw)
2021/05/02(日) 10:19:11.69ID:72ULtZJbM618デフォルトの名無しさん (ワッチョイ 8701-I0Kk)
2021/05/02(日) 10:26:38.41ID:GQme+tVN0 >>617
アプリケーション定義エラーまたはオブジェクトの定義エラーですってなります
アプリケーション定義エラーまたはオブジェクトの定義エラーですってなります
619デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/02(日) 11:31:48.49ID:1V5M4ibt0 2スレ目に何か書いとこうと思って、
とりあえず考えついたのがこれくらいしかなかった。
スンマセン
とりあえず考えついたのがこれくらいしかなかった。
スンマセン
620デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/02(日) 11:41:15.21ID:nZ1YzZjsM >>618
>>617で頓珍漢なこと書いてたわスマン、数値かどうかは関係ないわ
> hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
でエラーになるのか
> 実際は縦が動いていきます
の方でエラーになるのかどっち?
上でエラーになるなら1回目なのか何回かやったらエラーになるのかのどっち?
下でエラーになるならエラーになった時のセルの指定がおかしくないかを確認
あとシートの指定は変数に入れるかWithを使った方が楽だよ
With Worksheets("Sheet1")
For i = 0 to 回数
hako(i) = .Range(.Cells(1,1), .Cells(1,1)).Value
Next
End With
>>617で頓珍漢なこと書いてたわスマン、数値かどうかは関係ないわ
> hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
でエラーになるのか
> 実際は縦が動いていきます
の方でエラーになるのかどっち?
上でエラーになるなら1回目なのか何回かやったらエラーになるのかのどっち?
下でエラーになるならエラーになった時のセルの指定がおかしくないかを確認
あとシートの指定は変数に入れるかWithを使った方が楽だよ
With Worksheets("Sheet1")
For i = 0 to 回数
hako(i) = .Range(.Cells(1,1), .Cells(1,1)).Value
Next
End With
621デフォルトの名無しさん (ワッチョイ 8701-I0Kk)
2021/05/02(日) 12:12:35.89ID:GQme+tVN0 >>620
独学でやってたのでその辺の知識がなくてw
withで指定するといちいち書かなくて済むんですね
エラーになるのはもう1度目からです
> hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
ここの時点でエラーになります。
独学でやってたのでその辺の知識がなくてw
withで指定するといちいち書かなくて済むんですね
エラーになるのはもう1度目からです
> hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
ここの時点でエラーになります。
622デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/02(日) 12:42:32.96ID:72ULtZJbM >>621
切り分けとしてエラーになった時にイミディエイトウィンドウで
hako(i) = Worksheets("Sheet1").Range("A1").Value
Debug.Print Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
Debug.Print Worksheets("Sheet1").Cells(1,1).Address
を実行してみて
切り分けとしてエラーになった時にイミディエイトウィンドウで
hako(i) = Worksheets("Sheet1").Range("A1").Value
Debug.Print Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
Debug.Print Worksheets("Sheet1").Cells(1,1).Address
を実行してみて
623デフォルトの名無しさん (ワッチョイ 8701-I0Kk)
2021/05/02(日) 13:21:44.18ID:GQme+tVN0624デフォルトの名無しさん (スプッッ Sd7f-odQU)
2021/05/02(日) 13:32:29.72ID:MDNwXGbEd エラーが出なくなったらよかった。
他に問題は?
解決?
他に問題は?
解決?
625デフォルトの名無しさん (ワッチョイ dfe6-HlUj)
2021/05/02(日) 18:51:27.95ID:U5GvC0it0 こういう人って文法は理解できないけど
自然言語みたいに丸暗記で覚えていくのかな?
自然言語みたいに丸暗記で覚えていくのかな?
626デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/02(日) 19:13:05.11ID:uM4tl5TR0 〜10年後〜
「あ、ちゃんと覚えたほうが早かったんだ」
と、表面をなぞりまくる内に本質まで見えてきて最後に気づく人もいる
本業じゃないからね。仕方ないね。
「あ、ちゃんと覚えたほうが早かったんだ」
と、表面をなぞりまくる内に本質まで見えてきて最後に気づく人もいる
本業じゃないからね。仕方ないね。
627デフォルトの名無しさん (ワッチョイ a763-OedE)
2021/05/02(日) 19:18:03.74ID:o6kkyx/e0 類型から共通点を見出して次第にルールを覚えるのは自然界の学習形態に沿っている
628デフォルトの名無しさん (ワッチョイ dfe6-HlUj)
2021/05/02(日) 19:36:47.01ID:U5GvC0it0 古いBASICの構文が難しいからそこだけはしっかりと覚えたほうが早いんだけどね
629デフォルトの名無しさん (アウアウウー Saab-PU2s)
2021/05/03(月) 02:05:26.31ID:q65flA4Da 10年後もこんなことやってるとかw
630デフォルトの名無しさん (JP 0Hcb-OedE)
2021/05/03(月) 03:55:18.41ID:xnojJk7TH 一度普及した物は、減り続けても簡単にはなくならんよ
PC-9801だっていまだに現役で使ってる工場とかあるし
サポートがなくなって10年後でもVBAを使う職場は間違いなく世界中のどこかに残ってる
PC-9801だっていまだに現役で使ってる工場とかあるし
サポートがなくなって10年後でもVBAを使う職場は間違いなく世界中のどこかに残ってる
631デフォルトの名無しさん (アウアウウー Saab-PU2s)
2021/05/03(月) 04:12:16.92ID:mvyi8XcRa 10年たってもエラーが直んないとかやっているのかと言う意味だ
632デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/03(月) 07:31:09.68ID:o8xt4Q4Ca633デフォルトの名無しさん (ワッチョイ 8710-5cEd)
2021/05/03(月) 10:36:54.14ID:lox1tlFa0634デフォルトの名無しさん (ワッチョイ dfda-PU2s)
2021/05/03(月) 10:55:13.04ID:xPMfOD2I0 もはや社会人いないな
635デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/03(月) 11:10:44.37ID:l6TI+yt9M636デフォルトの名無しさん (ワッチョイ 7fda-OedE)
2021/05/03(月) 12:03:06.50ID:DAKb1uRk0 0から始まるときは 回数-1 じゃね
637デフォルトの名無しさん (ワッチョイ 5fba-eh0L)
2021/05/03(月) 14:59:49.63ID:po5ohrNh0 ttps://pastebin.pl/view/3a98fdc0
サムネイル画像の1番をクリックして表示された画像を順々にダウンロードするクローラみたいなものを作ろうとしてるのですが、
どうやったらサムネイル画像の1番めをクリックして表示された画像のURLを取得できるでしょうか?
サムネイル画像の1番をクリックして表示された画像を順々にダウンロードするクローラみたいなものを作ろうとしてるのですが、
どうやったらサムネイル画像の1番めをクリックして表示された画像のURLを取得できるでしょうか?
638デフォルトの名無しさん (ワッチョイ a72c-zL94)
2021/05/03(月) 18:17:11.84ID:iRbOallH0 HTML の中には、サムネイル画像をクリックした時の、飛び先のリンクが書いてある。
(ただし、下には、@の文字を追加した)
最初の画像なら、
<a href="http@s://e-hentai.org/s/78a8543e34/1727798-1">
うまくスクレイピングすれば、このURL を抜き出せるのでは?
(ただし、下には、@の文字を追加した)
最初の画像なら、
<a href="http@s://e-hentai.org/s/78a8543e34/1727798-1">
うまくスクレイピングすれば、このURL を抜き出せるのでは?
639デフォルトの名無しさん (ワッチョイ c710-TNk6)
2021/05/03(月) 20:20:21.53ID:BZOTVT3k0 シート上の複数のリストボックスの選択済みをボタンを押すと
一括クリアしたいと思っています。
For i = 0 To ActiveSheet.OLEObjects("ListBox1").ListCount - 1
If ActiveSheet.OLEObjects("ListBox1").Selected(i) = True Then
ActiveSheet.OLEObjects("ListBox1").Selected(i) = False
End If
Next i
このコードではオブジェクトがないとエラーになります。
どなたかご教授ください。
一括クリアしたいと思っています。
For i = 0 To ActiveSheet.OLEObjects("ListBox1").ListCount - 1
If ActiveSheet.OLEObjects("ListBox1").Selected(i) = True Then
ActiveSheet.OLEObjects("ListBox1").Selected(i) = False
End If
Next i
このコードではオブジェクトがないとエラーになります。
どなたかご教授ください。
640デフォルトの名無しさん (ワッチョイ 7f8e-MiMN)
2021/05/03(月) 22:04:23.29ID:0Wb20ZWw0 いつものあいつ
641デフォルトの名無しさん (ワッチョイ df3d-qkI6)
2021/05/03(月) 22:25:43.32ID:iSjmevx80 そりゃオブジェクト指定してるのにオブジェクトなかったらエラーになる
642デフォルトの名無しさん (ワッチョイ 7f10-gUWx)
2021/05/03(月) 23:09:22.50ID:Z9IP11pi0 アクティブやセレクトの多用はエラー処理が面倒くさくなる場合が多い
根本的なトコロから考え直すヨロシ
根本的なトコロから考え直すヨロシ
643デフォルトの名無しさん (JP 0Hcb-sT2V)
2021/05/04(火) 00:04:08.03ID:ZMKTnAbRH >>639
ボックスが複数あるのか、選択肢が複数あるのか、どっち?
ボックスが複数あるのか、選択肢が複数あるのか、どっち?
644デフォルトの名無しさん (ワッチョイ 8710-5cEd)
2021/05/04(火) 00:21:07.48ID:YgbBuLel0 >>635
どっちもしてないじゃん
どっちもしてないじゃん
645デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/04(火) 19:03:55.38ID:19cryuYQa なるほど
"sheet1"が有りません的なエラーなんだ
これは勉強になった
"sheet1"が有りません的なエラーなんだ
これは勉強になった
646デフォルトの名無しさん (ワッチョイ df42-YF1U)
2021/05/04(火) 23:49:30.76ID:uwH+LPLT0 一生懸命マクロを組んだのに実は標準機能で実現できると知ったときのガッカリ感
647デフォルトの名無しさん (ドコグロ MMeb-c369)
2021/05/05(水) 00:05:02.26ID:6kHGIPV/M 何を作ったかは知らんけど付加価値を追加すればええやん
俺はカラーパレットと並び替えを付加価値を付けて作って使っているけどな
俺はカラーパレットと並び替えを付加価値を付けて作って使っているけどな
648デフォルトの名無しさん (ワッチョイ 8710-5cEd)
2021/05/05(水) 01:59:04.74ID:OXlCsy+h0 ショートカットキー押したらアクティブセルのフォントや背景の色番号が
クリップボードにコピーされるちょいマクロを作ってる
マクロ作るときに欲しい色番号をすぐ書けるので便利
クリップボードにコピーされるちょいマクロを作ってる
マクロ作るときに欲しい色番号をすぐ書けるので便利
649デフォルトの名無しさん (ブーイモ MMcb-DFSD)
2021/05/05(水) 09:07:35.23ID:LGgg24P3M >>648
VBA初学者の誰もが通る道だな
VBA初学者の誰もが通る道だな
650デフォルトの名無しさん (ワッチョイ 075f-2Bcu)
2021/05/05(水) 09:17:08.30ID:4t234ePa0 人の作ったデータベースでIDと商品名がひとつのセルに入力されてるから個別にクリップボードにコピーするマクロを作ったな
651デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/05(水) 09:38:04.66ID:CaKZkb7J0 >>646
レベルアップしたよ。その経験は無駄にはなってないよ
レベルアップしたよ。その経験は無駄にはなってないよ
652デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/05(水) 10:04:42.11ID:nWfClEZV0 Private Sub Worksheet_Change(ByVal Target As Range)
If _
Target.Address <> "$C$2" _
Or (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 3).Value
main2 = Cells(2, 3).Value
If (Int(main) - (main)) = 0 Then
Sheets("DB").Cells(2, 3) = main
Else
Sheets("DB").Cells(2, 3) = Int(main2)
End If
End Sub
If _
Target.Address <> "$C$2" _
Or (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 3).Value
main2 = Cells(2, 3).Value
If (Int(main) - (main)) = 0 Then
Sheets("DB").Cells(2, 3) = main
Else
Sheets("DB").Cells(2, 3) = Int(main2)
End If
End Sub
653デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/05(水) 10:54:54.17ID:nWfClEZV0 Private Sub Worksheet_Change(ByVal Target As Range)
1つ目
If _
Target.Address <> "$C$2" _
Or (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 3).Value
main2 = Cells(2, 3).Value
If (Int(main) - (main)) = 0 Then
Sheets("DB").Cells(2, 3) = main
Else
Sheets("DB").Cells(2, 3) = Int(main2)
End If
End Sub
2つ目
If Intersect(Target, Range("A1:C2")) Is Nothing Or Target.Cells.Count > 6 Then Exit Sub
Columns("d").ClearContents
Application.EnableEvents = False
日付1 = DateSerial(Range("A1"), Range("B1"), Range("C1"))
日付2 = DateSerial(Range("A2"), Range("B2"), Range("C2"))
For 日付 = 日付1 To 日付2
r = r + 1
Cells(r, "D") = 日付
Next
Application.EnableEvents = True
End Sub
一つ目と二つ目を合わせるにはどうしたらいいでしょうか?
前にも質問してググってみたのですが今の私のレベルでは手に負えなくて困ってます
ご教授ください
1つ目
If _
Target.Address <> "$C$2" _
Or (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 3).Value
main2 = Cells(2, 3).Value
If (Int(main) - (main)) = 0 Then
Sheets("DB").Cells(2, 3) = main
Else
Sheets("DB").Cells(2, 3) = Int(main2)
End If
End Sub
2つ目
If Intersect(Target, Range("A1:C2")) Is Nothing Or Target.Cells.Count > 6 Then Exit Sub
Columns("d").ClearContents
Application.EnableEvents = False
日付1 = DateSerial(Range("A1"), Range("B1"), Range("C1"))
日付2 = DateSerial(Range("A2"), Range("B2"), Range("C2"))
For 日付 = 日付1 To 日付2
r = r + 1
Cells(r, "D") = 日付
Next
Application.EnableEvents = True
End Sub
一つ目と二つ目を合わせるにはどうしたらいいでしょうか?
前にも質問してググってみたのですが今の私のレベルでは手に負えなくて困ってます
ご教授ください
654デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/05(水) 10:58:18.12ID:CaKZkb7J0655デフォルトの名無しさん (ワッチョイ 075f-2Bcu)
2021/05/05(水) 11:08:55.56ID:4t234ePa0 この人教えるには金貰わなきゃ割に合わないくらいめんどい
656デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/05(水) 11:10:46.24ID:nWfClEZV0 すみません!
A B C D
1 2021 1 1 1/1
2 2021 1 5 1/2
1/3
1/4
1/5
↑のようにDateが入った表で
1/1と1/5までの日付をD列に表示したいです
もし2/4から2/6なら
A B C D
1 2021 1 1 1/1
2 2021 1 5 1/2
1/3
1/4
1/5
↑のようにDateが入った表で
1/1と1/5までの日付をD列に表示したいです
もし2/4から2/6なら
657デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/05(水) 11:12:17.39ID:nWfClEZV0 すみません!
A B C D
1 2021 1 1 1/1
2 2021 1 5 1/2
1/3
1/4
1/5
↑のようにDateが入った表で
1/1と1/5までの日付をD列に表示したいです
もし2/4から2/6なら2/4、2/5、2/6を
A B C D
1 2021 1 1 1/1
2 2021 1 5 1/2
1/3
1/4
1/5
↑のようにDateが入った表で
1/1と1/5までの日付をD列に表示したいです
もし2/4から2/6なら2/4、2/5、2/6を
658デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/05(水) 11:15:04.54ID:nWfClEZV0 A B C D
1 2021 1 1 1/1
2 2021 1 5 1/2
1/3
1/4
1/5
↑のようにDateが入った表で
1/1と1/5までの日付をD列に表示したいです
もし2/4から2/6なら2/4、2/5、2/6をD列に表示したいです
もしC2に数字以外の文字等が入った場合はC1の数字をC2に来るように出来るでしょうか?
1 2021 1 1 1/1
2 2021 1 5 1/2
1/3
1/4
1/5
↑のようにDateが入った表で
1/1と1/5までの日付をD列に表示したいです
もし2/4から2/6なら2/4、2/5、2/6をD列に表示したいです
もしC2に数字以外の文字等が入った場合はC1の数字をC2に来るように出来るでしょうか?
659デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/05(水) 11:16:11.30ID:nWfClEZV0 間違えて
何回も連投してしまいました
すみません
何回も連投してしまいました
すみません
660デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/05(水) 11:31:02.17ID:nWfClEZV0661デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/05(水) 13:52:36.59ID:DQe3j4Yqa うむ
他人に説明するときは5w1hがきほん
だいぶよくなったよな
他人に説明するときは5w1hがきほん
だいぶよくなったよな
662デフォルトの名無しさん (JP 0Hcb-sT2V)
2021/05/05(水) 14:24:16.43ID:zgzGcqkdH 質問とソースの両方見ても判定条件がよくわからん
超エスパーすると、数字が5個か6個入ってたらスタートか?
超エスパーすると、数字が5個か6個入ってたらスタートか?
663デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/05(水) 14:29:49.98ID:CaKZkb7J0 >>656
数式じゃダメなの?
数式だと3分で出来たけど
D1=DATE(A1,B1,C1)
D2=IF(DATE($A$2,$B$2,$C$2)<($D1+1),"",$D1+1)
D2を下にオートフィル
数式じゃダメなの?
数式だと3分で出来たけど
D1=DATE(A1,B1,C1)
D2=IF(DATE($A$2,$B$2,$C$2)<($D1+1),"",$D1+1)
D2を下にオートフィル
664デフォルトの名無しさん (ワッチョイ a72c-zL94)
2021/05/05(水) 14:33:33.57ID:Dw+PnwkB0 Ruby なら、
require 'csv'
require 'date'
input = <<"EOT"
year,month,day
2021,5,31
2021,6,2
EOT
options = { :headers => true } # ヘッダー有り
csv_ary = CSV.parse( input, options )
tmp_from = csv_ary[ 0 ]
tmp_to = csv_ary[ 1 ]
from_day = Date.new( tmp_from[ 0 ].to_i, tmp_from[ 1 ].to_i, tmp_from[ 2 ].to_i )
to_day = Date.new( tmp_to[ 0 ].to_i, tmp_to[ 1 ].to_i, tmp_to[ 2 ].to_i )
Range.new( from_day, to_day ).each{ |day| puts day }
出力
2021-05-31
2021-06-01
2021-06-02
require 'csv'
require 'date'
input = <<"EOT"
year,month,day
2021,5,31
2021,6,2
EOT
options = { :headers => true } # ヘッダー有り
csv_ary = CSV.parse( input, options )
tmp_from = csv_ary[ 0 ]
tmp_to = csv_ary[ 1 ]
from_day = Date.new( tmp_from[ 0 ].to_i, tmp_from[ 1 ].to_i, tmp_from[ 2 ].to_i )
to_day = Date.new( tmp_to[ 0 ].to_i, tmp_to[ 1 ].to_i, tmp_to[ 2 ].to_i )
Range.new( from_day, to_day ).each{ |day| puts day }
出力
2021-05-31
2021-06-01
2021-06-02
665デフォルトの名無しさん (ワッチョイ df3d-qkI6)
2021/05/05(水) 14:39:31.63ID:Peytj0fp0 >>664
スレ違い
スレ違い
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
