!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part66
https://mevius.5ch.net/test/read.cgi/tech/1589085825/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part67
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 33da-3+hg)
2020/06/26(金) 02:01:29.56ID:uDfmpksE0848デフォルトの名無しさん (ワッチョイ 623d-KAoe)
2020/08/12(水) 23:09:52.81ID:J7mAx2fT0 >>847
tmparrの要素数見てみ
もう1つ別に、貼り付け用のVariant型配列用意して新しく格納していかないとそりゃ空白行できるよ
それと、stepよりmodで条件分岐スキップさせる方がスマートじゃないかい
tmparrの要素数見てみ
もう1つ別に、貼り付け用のVariant型配列用意して新しく格納していかないとそりゃ空白行できるよ
それと、stepよりmodで条件分岐スキップさせる方がスマートじゃないかい
849デフォルトの名無しさん (ワッチョイ 45ce-p0wA)
2020/08/12(水) 23:38:22.31ID:neehvUDc0 >>847
こういうこと
あと、Dimの書き方もこうしないとだめ
Sub Macro1()
Dim tmpArr() As Variant, tmp As Variant
Dim rowIndex As Long, colIndex As Long
Dim arrIndex As Long ' 配列用のインデックス
tmpArr = Worksheets(1).Range("A3:C101").Value
arrIndex = 0
For rowIndex = 1 To UBound(tmpArr) - 2 Step 3 ' セルアドレスは3ずつ増やす
For colIndex = 1 To UBound(tmpArr, 2)
tmp = tmpArr(rowIndex, colIndex) & "結合データ"
tmpArr(arrIndex, colIndex) = tmp
Next
arrIndex = arrIndex + 1 ' 配列のインデックスは1ずつ増やす
Next
Worksheets(2).Range("A3:C35").Value = tmpArr
End Sub
こういうこと
あと、Dimの書き方もこうしないとだめ
Sub Macro1()
Dim tmpArr() As Variant, tmp As Variant
Dim rowIndex As Long, colIndex As Long
Dim arrIndex As Long ' 配列用のインデックス
tmpArr = Worksheets(1).Range("A3:C101").Value
arrIndex = 0
For rowIndex = 1 To UBound(tmpArr) - 2 Step 3 ' セルアドレスは3ずつ増やす
For colIndex = 1 To UBound(tmpArr, 2)
tmp = tmpArr(rowIndex, colIndex) & "結合データ"
tmpArr(arrIndex, colIndex) = tmp
Next
arrIndex = arrIndex + 1 ' 配列のインデックスは1ずつ増やす
Next
Worksheets(2).Range("A3:C35").Value = tmpArr
End Sub
850デフォルトの名無しさん (アウアウウー Saa5-KAoe)
2020/08/13(木) 00:14:44.45ID:6VU/YWxoa851デフォルトの名無しさん (ワッチョイ 45ce-p0wA)
2020/08/13(木) 00:25:56.44ID:87HjPNaJ0 >>850
そういう時はセル範囲を変数にして、どっちかのインデックスを3で割るか掛けるかすればいいんだよ
それならメンテは一箇所で済む
データの範囲をxlUpとかUsedRangeなどで調べたりテーブル化すれば全自動にもできる
そういう時はセル範囲を変数にして、どっちかのインデックスを3で割るか掛けるかすればいいんだよ
それならメンテは一箇所で済む
データの範囲をxlUpとかUsedRangeなどで調べたりテーブル化すれば全自動にもできる
852デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 01:36:11.66ID:cxZ8EfEa0 >>849
ありがとうございます
最初インデックスが有効範囲にないとエラーがでたので「arrIndex = 0」を
「arrIndex = 1」に変えたらできました
配列なので0から始まるということなのかと思ったんですが、1にしても
大丈夫なんでしょうか?出力した結果はForのものと同じだったので
貼り付け後に1行ずれるということはなさそうなんですが…
しかし確かに速いですね、配列
データを5000行×3列にしてテストしたら
For 約2.7秒
配列 約0.03秒
といった感じでした
>>850,851
コピー元のセル範囲は変数にして見出し行引いてnで割ったりして貼り付け先の
範囲を出してます
今回は決まった数字の方がいいかなと思って99行を3行ごとで33行、みたいに
してみました
ありがとうございます
最初インデックスが有効範囲にないとエラーがでたので「arrIndex = 0」を
「arrIndex = 1」に変えたらできました
配列なので0から始まるということなのかと思ったんですが、1にしても
大丈夫なんでしょうか?出力した結果はForのものと同じだったので
貼り付け後に1行ずれるということはなさそうなんですが…
しかし確かに速いですね、配列
データを5000行×3列にしてテストしたら
For 約2.7秒
配列 約0.03秒
といった感じでした
>>850,851
コピー元のセル範囲は変数にして見出し行引いてnで割ったりして貼り付け先の
範囲を出してます
今回は決まった数字の方がいいかなと思って99行を3行ごとで33行、みたいに
してみました
853デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 01:59:57.87ID:KWfn8cHZ0 >>852
tmpArrにセル内容入れた時のインデックスを確認すればわかる
tmpArrにセル内容入れた時のインデックスを確認すればわかる
854デフォルトの名無しさん (ワッチョイ 451c-p0wA)
2020/08/13(木) 11:07:02.86ID:rrpNLQgi0 環境
windows 10 64bit
office 365 64bit
string型変数strにスペースを埋める単純なコードです。
Sub test()
Dim num_i As Integer
Dim num_l As Long
Dim num_ll As LongPtr
Dim str As String
Debug.Print "integer"; Len(num_i); TypeName(num_i)
Debug.Print "long"; Len(num_l); TypeName(num_l)
Debug.Print "longptr"; Len(num_ll); TypeName(num_ll)
num_i = 16: num_l = 16: num_ll = 16
str = Space(num_i): Debug.Print ">>"; str; "<<"
str = Space(num_l): Debug.Print ">>"; str; "<<"
''動かない
'str = Space(num_ll): Debug.Print ">>"; str; "<<"
''動く
str = Space(CLng(num_ll)): Debug.Print ">>"; str; "<<"
End Sub
このように64bitに対応していない組み込み関数って結構あるんのだろうか・・・
いつからか忘れたけど、 64bit推奨しているなら、これぐらい対応しろよ、毎糞がぁぁあ
excelの64bit環境って現状こんなものなの?
windows 10 64bit
office 365 64bit
string型変数strにスペースを埋める単純なコードです。
Sub test()
Dim num_i As Integer
Dim num_l As Long
Dim num_ll As LongPtr
Dim str As String
Debug.Print "integer"; Len(num_i); TypeName(num_i)
Debug.Print "long"; Len(num_l); TypeName(num_l)
Debug.Print "longptr"; Len(num_ll); TypeName(num_ll)
num_i = 16: num_l = 16: num_ll = 16
str = Space(num_i): Debug.Print ">>"; str; "<<"
str = Space(num_l): Debug.Print ">>"; str; "<<"
''動かない
'str = Space(num_ll): Debug.Print ">>"; str; "<<"
''動く
str = Space(CLng(num_ll)): Debug.Print ">>"; str; "<<"
End Sub
このように64bitに対応していない組み込み関数って結構あるんのだろうか・・・
いつからか忘れたけど、 64bit推奨しているなら、これぐらい対応しろよ、毎糞がぁぁあ
excelの64bit環境って現状こんなものなの?
855デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 11:30:36.17ID:cxZ8EfEa0 >>853
インデックスを確認したところ
rowIndex 1→1→1→4→4→4→7→7→7
colIndex 1→2→3→1→2→3→1→2→3
arrIndex 1→1→1→2→2→2→3→3→3
というように変化していきましたので大丈夫そうです、ありがとうございました
インデックスを確認したところ
rowIndex 1→1→1→4→4→4→7→7→7
colIndex 1→2→3→1→2→3→1→2→3
arrIndex 1→1→1→2→2→2→3→3→3
というように変化していきましたので大丈夫そうです、ありがとうございました
856デフォルトの名無しさん (ワッチョイ e5da-p5K4)
2020/08/13(木) 11:34:45.35ID:25tyhxYJ0 コンパイルエラーじゃねーか、何を問題にしているのかわからん
857デフォルトの名無しさん (ワッチョイ c22f-178q)
2020/08/13(木) 12:50:45.70ID:2SQEG+lQ0 試してないから知らんけど
64ビット長の文字列とかサポートされてないから当然だと思うけどな
つか今のEXCELついに64ビットが規定になったのか
64ビット長の文字列とかサポートされてないから当然だと思うけどな
つか今のEXCELついに64ビットが規定になったのか
858デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 13:00:55.28ID:KWfn8cHZ0 >>855
いや、なんでインデックス0だとエラーになるかって話・・・
いや、なんでインデックス0だとエラーになるかって話・・・
859デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 14:08:49.69ID:cxZ8EfEa0 >>858
あ、そっちでしたか
エラーが出た状態のそれぞれのインデックスは
rowIndex 1
colIndex 1
arrIndex 0
でしたので、
tmpArr(arrIndex, colIndex) = tmp
のところが
tmpArr(0, 1) = tmp
になってエラー、ですかね?
あ、そっちでしたか
エラーが出た状態のそれぞれのインデックスは
rowIndex 1
colIndex 1
arrIndex 0
でしたので、
tmpArr(arrIndex, colIndex) = tmp
のところが
tmpArr(0, 1) = tmp
になってエラー、ですかね?
860デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 14:16:56.76ID:KWfn8cHZ0 >>859
tmpArrにインデックス0は存在しないのに指定するからエラーが出ていて、セル範囲を代入した時は1から始まることを知らなくても変数の状態をチェックすればすぐわかることだが、もしかしてローカルウィンドウとかを知らないパターン
tmpArrにインデックス0は存在しないのに指定するからエラーが出ていて、セル範囲を代入した時は1から始まることを知らなくても変数の状態をチェックすればすぐわかることだが、もしかしてローカルウィンドウとかを知らないパターン
861デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 14:35:55.00ID:cxZ8EfEa0 >>860
あんまり使いこなせてはいないですがローカルウィンドウは表示させています
849さんが教えてくれたコードの中でarrIndexを「0」に指定しているのにはなにか
理由があるんじゃないかと思ったんですが、書き間違いとかでしょうか?
あんまり使いこなせてはいないですがローカルウィンドウは表示させています
849さんが教えてくれたコードの中でarrIndexを「0」に指定しているのにはなにか
理由があるんじゃないかと思ったんですが、書き間違いとかでしょうか?
862デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 14:49:25.52ID:KWfn8cHZ0 >>861
意図は知らない
意図は知らない
863デフォルトの名無しさん (ワッチョイ e5da-p5K4)
2020/08/13(木) 18:33:06.86ID:25tyhxYJ0 >>861
そういうのスルーできないとこの先進まんよ
そういうのスルーできないとこの先進まんよ
864デフォルトの名無しさん (ワッチョイ 2e10-s47K)
2020/08/14(金) 07:43:46.87ID:whfJUs+50 VLOOKUPについての質問なんですが、
検索キー 検索範囲1 検索範囲2 産地
りんご りんご ぶどう 岡山産
みかん りんご 岡山産
いちご もも 岡山産
りんご ぶどう 山梨産
みかん なし 山梨産
いちご りんご 山梨産
りんごから別セルの検索範囲1を見た後に検索範囲2を見にいって産地の戻り値を得る関数を作りたいのですが、
検索キーのヒットで産地が重複した場合は表示を1度だけにして、期待する結果として「岡山県 山梨県」とだけ得られるような関数を作りたいです
VLOOKUPを&で繋げると「岡山県岡山県」と列の一番初めの戻り値しか得られません
VLOOKUP以外でもやり方があれば教えて頂ければ助かります
検索キー 検索範囲1 検索範囲2 産地
りんご りんご ぶどう 岡山産
みかん りんご 岡山産
いちご もも 岡山産
りんご ぶどう 山梨産
みかん なし 山梨産
いちご りんご 山梨産
りんごから別セルの検索範囲1を見た後に検索範囲2を見にいって産地の戻り値を得る関数を作りたいのですが、
検索キーのヒットで産地が重複した場合は表示を1度だけにして、期待する結果として「岡山県 山梨県」とだけ得られるような関数を作りたいです
VLOOKUPを&で繋げると「岡山県岡山県」と列の一番初めの戻り値しか得られません
VLOOKUP以外でもやり方があれば教えて頂ければ助かります
865デフォルトの名無しさん (ワッチョイ 4290-p5K4)
2020/08/14(金) 11:35:06.45ID:DbBU1lOD0 >>864 マクロ作りました。
最大100件までヒット可能です。
長くなって申し訳ありません。
ご参考までに。(1/3)
Option Explicit
'/// 変数定義
Public j As Long 'ヒット件数
Public strArray(99) As String 'ヒットした産地の配列
Sub Main()
Call 初期化
Call 検索処理("B", 2)
Call 検索処理("C", 1)
Call メッセージ
End Sub
最大100件までヒット可能です。
長くなって申し訳ありません。
ご参考までに。(1/3)
Option Explicit
'/// 変数定義
Public j As Long 'ヒット件数
Public strArray(99) As String 'ヒットした産地の配列
Sub Main()
Call 初期化
Call 検索処理("B", 2)
Call 検索処理("C", 1)
Call メッセージ
End Sub
866デフォルトの名無しさん (ワッチョイ 4290-p5K4)
2020/08/14(金) 11:35:39.43ID:DbBU1lOD0 Sub 初期化() '///グローバル変数の初期化 (2/3)
'/// 変数定義
Dim i As Long 'カウンタ
j = 0
For i = 0 To 99
strArray(i) = ""
Next i
End Sub
Sub 検索処理(pCol As String, pMovNum As Long)
'/// 変数定義
Dim i As Long 'カウンタ
Dim lngMaxRow As Long '処理数
Dim strKey As String '検索値
Dim strSanchi As String 'ワーク変数
'/// キー
strKey = ActiveSheet.Range("A2").Value
'/// 処理数
lngMaxRow = ActiveSheet.Range("B1000").End(xlUp).Row
'/// ループ
For i = 2 To lngMaxRow
If strKey = ActiveSheet.Range(pCol & i).Value Then
strSanchi = ActiveSheet.Range(pCol & i).Offset(0, pMovNum).Value
If 重複チェック(strSanchi, strArray()) = False Then
strArray(j) = strSanchi
j = j + 1
End If
End If
Next i
End Sub
'/// 変数定義
Dim i As Long 'カウンタ
j = 0
For i = 0 To 99
strArray(i) = ""
Next i
End Sub
Sub 検索処理(pCol As String, pMovNum As Long)
'/// 変数定義
Dim i As Long 'カウンタ
Dim lngMaxRow As Long '処理数
Dim strKey As String '検索値
Dim strSanchi As String 'ワーク変数
'/// キー
strKey = ActiveSheet.Range("A2").Value
'/// 処理数
lngMaxRow = ActiveSheet.Range("B1000").End(xlUp).Row
'/// ループ
For i = 2 To lngMaxRow
If strKey = ActiveSheet.Range(pCol & i).Value Then
strSanchi = ActiveSheet.Range(pCol & i).Offset(0, pMovNum).Value
If 重複チェック(strSanchi, strArray()) = False Then
strArray(j) = strSanchi
j = j + 1
End If
End If
Next i
End Sub
867デフォルトの名無しさん (ワッチョイ 4290-p5K4)
2020/08/14(金) 11:36:01.63ID:DbBU1lOD0 Function 重複チェック(pSanchi As String, pArray() As String) As Boolean(3/3)
'/// 変数定義
Dim i As Long 'カウンタ
'/// ループ
For i = 0 To 99
If pSanchi = pArray(i) Then
重複チェック = True
Exit Function
End If
Next i
重複チェック = False
End Function
Sub メッセージ()
'/// 変数定義
Dim i As Long 'カウンタ
Dim strAnswer As String 'ワーク変数
strAnswer = strArray(0)
'/// メッセージ出力
For i = 1 To j
If strArray(i) <> "" Then
strAnswer = strAnswer & "," & strArray(i)
End If
Next i
'/// 1件でもあれば表示
If j > 0 Then
MsgBox (strAnswer)
End If
End Sub
'/// 変数定義
Dim i As Long 'カウンタ
'/// ループ
For i = 0 To 99
If pSanchi = pArray(i) Then
重複チェック = True
Exit Function
End If
Next i
重複チェック = False
End Function
Sub メッセージ()
'/// 変数定義
Dim i As Long 'カウンタ
Dim strAnswer As String 'ワーク変数
strAnswer = strArray(0)
'/// メッセージ出力
For i = 1 To j
If strArray(i) <> "" Then
strAnswer = strAnswer & "," & strArray(i)
End If
Next i
'/// 1件でもあれば表示
If j > 0 Then
MsgBox (strAnswer)
End If
End Sub
868デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/14(金) 12:26:16.36ID:RMq/G2m80 Dim obj As Object
Dim rng As Range
Set obj = CreateObject("Scripting.Dictionary")
For Each rng In Range(検索範囲)
If rng.Value = Range("a2").Value Then
With Cells(rng.Row, "d")
If obj.exists(.Value) = False Then obj.Add .Value, 0
End With
End If
Next
Range("e1").Resize(obj.Count).Value = WorksheetFunction.Transpose(obj.keys)
Set obj = Nothing
Dim rng As Range
Set obj = CreateObject("Scripting.Dictionary")
For Each rng In Range(検索範囲)
If rng.Value = Range("a2").Value Then
With Cells(rng.Row, "d")
If obj.exists(.Value) = False Then obj.Add .Value, 0
End With
End If
Next
Range("e1").Resize(obj.Count).Value = WorksheetFunction.Transpose(obj.keys)
Set obj = Nothing
870デフォルトの名無しさん (ワッチョイ 6eda-p0wA)
2020/08/16(日) 00:23:38.07ID:oP+sOQXV0 >>864
構造体使えば簡単に作れそうだけどね。
構造体使えば簡単に作れそうだけどね。
871デフォルトの名無しさん (ワッチョイ e5da-p5K4)
2020/08/16(日) 13:39:49.06ID:6OTbxtgn0 質問しないで自力でできるようになるのがまず先だろう
872デフォルトの名無しさん (ワッチョイ 9f40-JHA7)
2020/08/19(水) 20:44:10.60ID:1ghAy1sC0 スレ全否定で草
873デフォルトの名無しさん (ワッチョイ 7fd3-ri+I)
2020/08/20(木) 01:09:34.68ID:Qa4rAQro0 シート1のプルダウンから選択した結果(テキスト)を
シート2の任意のセルに表示させるにはどうすればいいですか?
シート2の任意のセルに表示させるにはどうすればいいですか?
874デフォルトの名無しさん (ワッチョイ 7f42-KCZZ)
2020/08/20(木) 07:05:04.54ID:UH//ZFwI0 リンクするセルに指定しておけば
875デフォルトの名無しさん (スプッッ Sd1f-POXI)
2020/08/24(月) 18:59:52.50ID:ga12x2Hwd A列には数字を手入力
B列には●があったりなかったり
B列に●がある場合A列に数字を(例えば100)入力するとメッセージボックス?がでて
「●があるから入力しちゃ駄目よ!どうしても"100"を入力したいの!?」
「OK」「キャンセル」
みたいにしたいんですがどーすればいいですか?
B列には●があったりなかったり
B列に●がある場合A列に数字を(例えば100)入力するとメッセージボックス?がでて
「●があるから入力しちゃ駄目よ!どうしても"100"を入力したいの!?」
「OK」「キャンセル」
みたいにしたいんですがどーすればいいですか?
876デフォルトの名無しさん (ワッチョイ ff02-YpYZ)
2020/08/24(月) 19:07:40.74ID:k+YcXwpu0 Worksheet_Changeイベントを使えばいいです
877デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/24(月) 19:26:54.83ID:w4ZB1tmF0 >>875
データの入力規則のエラーメッセージ
データの入力規則のエラーメッセージ
878デフォルトの名無しさん (ワッチョイ 7f42-KCZZ)
2020/08/24(月) 20:16:24.02ID:pfMfCN200 1を入力した時点でメッセージボックスが出ると思うんだが10まではセーフで100だと確認のほうが良いのか
879デフォルトの名無しさん (スップ Sd1f-5gYb)
2020/08/24(月) 20:27:42.41ID:N/ceNi6Ud >>875だけどいい忘れてました
0を入力した場合はメッセージ出さずにそのまま0と入力
0以上(例えば200)を入力した場合は「●なんだから入力すんなボケ!どうしても"200"って入力したいの?」
「OK」「キャンセル」
みたいなね
0を入力した場合はメッセージ出さずにそのまま0と入力
0以上(例えば200)を入力した場合は「●なんだから入力すんなボケ!どうしても"200"って入力したいの?」
「OK」「キャンセル」
みたいなね
880デフォルトの名無しさん (スプッッ Sd9f-5gYb)
2020/08/24(月) 20:34:28.35ID:ZbbapVPTd OK押したらそのまま200がセルに入力される
キャンセル押したら""ね
キャンセル押したら""ね
881デフォルトの名無しさん (ワッチョイ 9f8e-NwtD)
2020/08/24(月) 20:35:32.06ID:C0VIZWNb0 馬鹿は条件を後で付け加える
882デフォルトの名無しさん (スプッッ Sd9f-5gYb)
2020/08/24(月) 20:36:54.05ID:ZbbapVPTd >>881
誹謗中傷?
誹謗中傷?
883デフォルトの名無しさん (ラクッペペ MM4f-NoNb)
2020/08/24(月) 20:42:38.20ID:hwq7Y5YHM メッセージボックスはうっとおしいからセルの色を変えるぐらいのほうが喜ばれるよ
884デフォルトの名無しさん (スプッッ Sd9f-5gYb)
2020/08/24(月) 20:46:47.07ID:ZbbapVPTd885デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/24(月) 20:56:49.89ID:w4ZB1tmF0 数字以外を入力したら?
886デフォルトの名無しさん (スプッッ Sd1f-5gYb)
2020/08/24(月) 20:59:38.82ID:KH3D74B7d >>885
数字以外入力しません
数字以外入力しません
887デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/24(月) 21:02:06.67ID:w4ZB1tmF0 自主的にしないのなら入力規則をユーザ設定にしてエラースタイルを注意でいいじゃんかと思うんだが
888デフォルトの名無しさん (スッップ Sd9f-5gYb)
2020/08/24(月) 21:19:01.81ID:hykwk2E+d889デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/24(月) 21:58:37.53ID:w4ZB1tmF0 ●があるあったらダイアログ表示するだけ
890デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/24(月) 21:58:57.09ID:w4ZB1tmF0 ●があったら
891デフォルトの名無しさん (ドコグロ MM7f-a78p)
2020/08/24(月) 22:34:30.60ID:6Nxhc9klM 個性的な物を作りたいのなら図形を使えば色も形も自由自在に作れる
892デフォルトの名無しさん (ワッチョイ ff63-3Lde)
2020/08/25(火) 07:27:56.68ID:Dix5Myuw0 Win10で、VBAを作っています。
テキストファイルをLine関数で1行ずつ読み込み
読んだ行にてInStr関数で円マーク(\)を検索
しています。
InStr(1, 検索対象, "\")
と書いています。
しかし\が無い行で「ある」と判定されているようです。
\にはエスケープ文字が必要だからではないかと思いますが
どう書いたら良いかわからず途方に暮れています。
どなたかご教示ください。
(文字コードで指定すれば良いようですが
他の担当者が理解できない可能性もあるので
別の方法も把握したく存じます)
テキストファイルをLine関数で1行ずつ読み込み
読んだ行にてInStr関数で円マーク(\)を検索
しています。
InStr(1, 検索対象, "\")
と書いています。
しかし\が無い行で「ある」と判定されているようです。
\にはエスケープ文字が必要だからではないかと思いますが
どう書いたら良いかわからず途方に暮れています。
どなたかご教示ください。
(文字コードで指定すれば良いようですが
他の担当者が理解できない可能性もあるので
別の方法も把握したく存じます)
893デフォルトの名無しさん (ワッチョイ ff02-YpYZ)
2020/08/25(火) 09:38:34.28ID:UEyqjSRY0 無いのにあると判定される行の文字列を教えて下さい
894デフォルトの名無しさん (ワッチョイ 7f80-6SBr)
2020/08/25(火) 09:40:05.96ID:j61R6fge0 instr特に問題なさそうですが。
ウォッチ式の想定外時検索対象文字列は晒せないのですか?
instr使わずに1文字ずつ取るとか?
ウォッチ式の想定外時検索対象文字列は晒せないのですか?
instr使わずに1文字ずつ取るとか?
895デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/25(火) 10:33:08.00ID:JyPo3Qi40 >>892
されてるようですじゃなくてちゃんと確認して
されてるようですじゃなくてちゃんと確認して
896デフォルトの名無しさん (テテンテンテン MM4f-Is5t)
2020/08/25(火) 10:41:04.86ID:8u+D4XfyM >>893
海砂利水魚の水行末\n
海砂利水魚の水行末\n
897デフォルトの名無しさん (ワッチョイ ff02-YpYZ)
2020/08/25(火) 11:01:09.56ID:UEyqjSRY0 >>896
次の人どうぞ
次の人どうぞ
898デフォルトの名無しさん (テテンテンテン MM4f-Is5t)
2020/08/25(火) 11:14:02.60ID:HdlOc3e6M >>893
[壁]_・)_シン・シンギュラリティ¥n
[壁]_・)_シン・シンギュラリティ¥n
899デフォルトの名無しさん (ラクッペペ MM4f-pqEW)
2020/08/25(火) 12:47:56.13ID:LoAGT2GVM >>893
会社の住所です
一文字目が全角郵便マーク
2文字目が全角スペース
三文字目から半角数字で郵便番号です。
\と半角ハイフンの間を取り出す処理を
書いたところ
郵便番号最初の3桁、
ハイフンの手前まで
が取り出されますので
全角スペースが\マークとして
扱われてると思ってます
会社の住所です
一文字目が全角郵便マーク
2文字目が全角スペース
三文字目から半角数字で郵便番号です。
\と半角ハイフンの間を取り出す処理を
書いたところ
郵便番号最初の3桁、
ハイフンの手前まで
が取り出されますので
全角スペースが\マークとして
扱われてると思ってます
900デフォルトの名無しさん (テテンテンテン MM4f-Is5t)
2020/08/25(火) 12:58:49.60ID:KRGfI1UYM >>893
「\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
\と半角ハイフンの間を取り出す処理
を全角スペースが\マークとして扱われてると思ってます
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-」
「\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
\と半角ハイフンの間を取り出す処理
を全角スペースが\マークとして扱われてると思ってます
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-」
901デフォルトの名無しさん (ワッチョイ 7f2f-3Lde)
2020/08/25(火) 13:03:59.81ID:at7FUvm30902デフォルトの名無しさん (ワッチョイ ff02-YpYZ)
2020/08/25(火) 13:39:05.50ID:UEyqjSRY0 >>899
その説明だとコード晒してもらわないとわからん
住所そのまま晒してって言ってるんじゃなくて
別の文字に置き換えていいから同じフォーマットで
処理前後でどうなってほしい所がどうなってしまうのか書いてもらわないとわからない
その説明だとコード晒してもらわないとわからん
住所そのまま晒してって言ってるんじゃなくて
別の文字に置き換えていいから同じフォーマットで
処理前後でどうなってほしい所がどうなってしまうのか書いてもらわないとわからない
903デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/25(火) 13:53:58.00ID:JyPo3Qi40 >>900
なんで想像するだけで実際の中身を確認ようとしないの
なんで想像するだけで実際の中身を確認ようとしないの
904デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/25(火) 13:54:35.07ID:JyPo3Qi40905デフォルトの名無しさん (JP 0Hc3-n+O8)
2020/08/25(火) 14:14:41.86ID:NinLgEivH プログラムってのはなあ、思った通りには動かないもんなんだよ
いつでも書いた通りに動くだけ
いつでも書いた通りに動くだけ
906デフォルトの名無しさん (ワッチョイ 1fda-YpYZ)
2020/08/25(火) 14:23:43.06ID:QWQtRQIZ0 タブとか改行(CR+LF)とかバイナリデータが混ざっているとか機種依存文字とか
文字コードの違いとか色々あるからな
文字コードの違いとか色々あるからな
907デフォルトの名無しさん (ワッチョイ 7f2f-3Lde)
2020/08/25(火) 14:28:30.69ID:at7FUvm30 まあ一番怪しいのは、文字コード関係でテキストがちゃんと読めてない
ちゃんと読みこんだデータのバイナリ確認してみろ
ちゃんと読みこんだデータのバイナリ確認してみろ
908デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/25(火) 14:43:48.86ID:JyPo3Qi40 line inputはSJISで読み込む
バイナリ確認しなくても元ファイルがSJISであればそれでいい
バイナリ確認しなくても元ファイルがSJISであればそれでいい
909デフォルトの名無しさん (ラクッペペ MM4f-pqEW)
2020/08/25(火) 15:50:41.61ID:LoAGT2GVM すみません892です
デバッガで見たら
全部の行で1を返してました
つまり全行、先頭は\マークみたいです
1文字目は無視するようにしたら
意図通りの動きになりました
デバッガで見たら
全部の行で1を返してました
つまり全行、先頭は\マークみたいです
1文字目は無視するようにしたら
意図通りの動きになりました
910デフォルトの名無しさん (ワッチョイ ff02-YpYZ)
2020/08/25(火) 16:00:19.40ID:UEyqjSRY0911デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/25(火) 16:23:37.10ID:JyPo3Qi40 先頭が\かどうかすらも確認しないのか…
912デフォルトの名無しさん (オッペケ Sr73-rg60)
2020/08/25(火) 17:36:53.32ID:Lm28KJF/r VBAからPowerShellで外部コマンドを実行して出力内容を加工したいのですが、うまくいきません
現在は、Execの引数に下記のように書いてます
powershell -Command "& Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 "foo bar" >>'一時ファイル.txt'"
どうしたらよいでしょうか
現在は、Execの引数に下記のように書いてます
powershell -Command "& Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 "foo bar" >>'一時ファイル.txt'"
どうしたらよいでしょうか
913デフォルトの名無しさん (アウアウウー Sa63-3MaI)
2020/08/25(火) 18:00:08.63ID:YUvg5uyAa >>909
1件目でも入っているのかな?
1件目でも入っているのかな?
914デフォルトの名無しさん (アウアウカー Sa13-tqqx)
2020/08/25(火) 18:12:08.06ID:mPnhNdWta テキスト全行読み込みしてsplitしてる説
んで\rでsplitして\nが先頭に来てるんじゃね
んで\rでsplitして\nが先頭に来てるんじゃね
915デフォルトの名無しさん (ワッチョイ 9f40-JHA7)
2020/08/25(火) 20:46:10.83ID:+ct4ya2Y0 >>912
Exec("powershell -Command Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 'foo bar' >> '一時ファイル.txt'")
Exec("powershell -Command Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 'foo bar' >> '一時ファイル.txt'")
916デフォルトの名無しさん (ラクッペペ MM4f-NoNb)
2020/08/25(火) 20:53:13.85ID:4vNIHvGrM shell でいいのにわざわざ外部オブジェクト使う人っているよね
917デフォルトの名無しさん (アウアウウー Sa63-/2iM)
2020/08/25(火) 21:28:28.78ID:n9RIifSya >>914
改行コードは別に文字列としての\が入ってる訳じゃないだろ
改行コードは別に文字列としての\が入ってる訳じゃないだろ
918デフォルトの名無しさん (オッペケ Sr73-rg60)
2020/08/25(火) 22:12:02.97ID:Lm28KJF/r >>915
ありがとうございます
もう一点よろしいでしょうか
標準出力にUnicodeで吐き出すコンソールアプリの出力を、Wscript.Shell.ExecのStdOutを使用して読み込みたいのですが、文字化けします
個人情報を扱うのでできれば一時ファイルを作らずに作業したいのですが、Unicodeの標準出力を直接読み込む方法は無いでしょうか
ありがとうございます
もう一点よろしいでしょうか
標準出力にUnicodeで吐き出すコンソールアプリの出力を、Wscript.Shell.ExecのStdOutを使用して読み込みたいのですが、文字化けします
個人情報を扱うのでできれば一時ファイルを作らずに作業したいのですが、Unicodeの標準出力を直接読み込む方法は無いでしょうか
919デフォルトの名無しさん (テテンテンテン MM4f-Is5t)
2020/08/25(火) 22:59:12.42ID:8Q4E/UJjM920デフォルトの名無しさん (ワッチョイ 118e-WkEz)
2020/08/26(水) 01:37:45.74ID:zCSTsYdn0 >>918
スレチだろ、厚かましい
スレチだろ、厚かましい
921デフォルトの名無しさん (ワッチョイ 452c-VQ5f)
2020/08/26(水) 02:00:19.04ID:BpaQECb00 >>918
オプションなどで、文字コードを指定できないの?
オプションなどで、文字コードを指定できないの?
922デフォルトの名無しさん (ワッチョイ 7901-yRqa)
2020/08/26(水) 02:56:47.46ID:oEB3gdtA0 これから新規に作る形式の文字コードは、UTF-8とGB18030の二択じゃないでしょうかね。
923デフォルトの名無しさん (オッペケ Sr51-cLD7)
2020/08/26(水) 11:13:08.29ID:DBm/bRJ+r >>921
調べたところわかりませんでした
Unicodeの文字が欠落するのでSJISに変換して流すのも避けたいです
一晩考えてPowerShell側でBase64エンコードしてからVBA側でデコードしてみようと考え直しました
失礼しました
調べたところわかりませんでした
Unicodeの文字が欠落するのでSJISに変換して流すのも避けたいです
一晩考えてPowerShell側でBase64エンコードしてからVBA側でデコードしてみようと考え直しました
失礼しました
924デフォルトの名無しさん (オッペケ Sr51-cLD7)
2020/08/26(水) 11:25:02.41ID:DBm/bRJ+r ちなみに、Wscript.Shell.Execに渡せるコマンドラインって255文字までのような制限があるのでしょうか
コンソール側で動いたコマンドラインがExecからだと動かなかったりするので
コンソール側で動いたコマンドラインがExecからだと動かなかったりするので
925デフォルトの名無しさん (ワッチョイ 61da-1etN)
2020/08/26(水) 19:01:16.17ID:vVfdbk8D0926デフォルトの名無しさん (ワッチョイ 61da-1etN)
2020/08/26(水) 19:03:04.71ID:vVfdbk8D0 powershellか。
ごめん、関係ないわ。
ごめん、関係ないわ。
927デフォルトの名無しさん (オッペケ Sr51-cLD7)
2020/08/26(水) 19:09:15.11ID:DBm/bRJ+r >>926
ありがとうございます。
PowerShell上で動作を確認したワンライナースクリプトをExecで実行したら動かなかったもので、特に根拠があって疑ってる訳じゃないです。
こちらはPS1ファイルを用意して実行することにしました。
ありがとうございます。
PowerShell上で動作を確認したワンライナースクリプトをExecで実行したら動かなかったもので、特に根拠があって疑ってる訳じゃないです。
こちらはPS1ファイルを用意して実行することにしました。
928デフォルトの名無しさん (オッペケ Sr51-cLD7)
2020/08/26(水) 19:15:01.39ID:DBm/bRJ+r ところで、ADODB.Streamに書き込んだテキストをCSVとしてパースしてRecordSetに読み込む方法をどなたかご存知ないでしょうか
一時ファイルを保存すればいいのですがオンメモリでやれたらそちらの方がありがたいです
同じADODBクラスなので方法がありそうだなと思い調べてみたのですが…
一時ファイルを保存すればいいのですがオンメモリでやれたらそちらの方がありがたいです
同じADODBクラスなので方法がありそうだなと思い調べてみたのですが…
929デフォルトの名無しさん (ワッチョイ 118e-WkEz)
2020/08/26(水) 20:35:45.89ID:zCSTsYdn0 >>928
厚かましいスレチはいい加減にしろ
厚かましいスレチはいい加減にしろ
930デフォルトの名無しさん (ワッチョイ ae02-1etN)
2020/08/26(水) 20:40:23.56ID:SKzt3LIS0 ノイズが発生してるけど無視していいよ
知ってて答えたい人が答えると思うし
知ってて答えたい人が答えると思うし
931デフォルトの名無しさん (ワッチョイ 61da-1etN)
2020/08/26(水) 22:47:53.03ID:vVfdbk8D0932デフォルトの名無しさん (ワッチョイ 0de6-xiBb)
2020/08/26(水) 22:50:24.69ID:Xm7NIhRp0 できないわけじゃない
1文字づつ解析とか馬鹿らしくてやってられないから一発でできる方法を聞いておる
1文字づつ解析とか馬鹿らしくてやってられないから一発でできる方法を聞いておる
933デフォルトの名無しさん (ワッチョイ 02b5-lmXr)
2020/08/26(水) 22:52:29.85ID:FaIObZsK0 一年他部署に応援行ってて戻ってきたが
その間に転属されてた人に
これがあれば一覧のデータを一気に出力できるからマクロの使い方だけは覚えてね
マクロとかわかる?とにかく使い方おぼえて
と言われた
俺が応援行く前に作って課に展開したマクロやんけ…
その間に転属されてた人に
これがあれば一覧のデータを一気に出力できるからマクロの使い方だけは覚えてね
マクロとかわかる?とにかく使い方おぼえて
と言われた
俺が応援行く前に作って課に展開したマクロやんけ…
934デフォルトの名無しさん (ベーイモ MM16-4W6K)
2020/08/27(木) 10:45:53.98ID:M3gK7ks0M strconvで文字列"試験"をUnicodeに変換すると、変な文字に変換されるんだけど解決策ありますか?
StrConv(StrConv("試験",vbUnicode),vbFromUnicode)
の結果が、"試験"であってほしいんだけど、別のよくわからない文字に変換される
StrConv(StrConv("試験",vbUnicode),vbFromUnicode)
の結果が、"試験"であってほしいんだけど、別のよくわからない文字に変換される
935デフォルトの名無しさん (オッペケ Sr51-cLD7)
2020/08/27(木) 10:56:45.12ID:EdbkG5X3r >>931
情報小出しですみません。
UTF8で標準出力に個人情報含むCSVを吐き出すコンソールアプリがありまして、それを一時ファイルを使用せずにVBAに読み込むのが目的です。
Wscript.Exec.StdOutを使用したところUTF8が文字化けしてしまい、PowerShell上でByte配列化→Base64エンコードして吐き出すことで、VBAでCSVのStringを得るところまではできました。
情報小出しですみません。
UTF8で標準出力に個人情報含むCSVを吐き出すコンソールアプリがありまして、それを一時ファイルを使用せずにVBAに読み込むのが目的です。
Wscript.Exec.StdOutを使用したところUTF8が文字化けしてしまい、PowerShell上でByte配列化→Base64エンコードして吐き出すことで、VBAでCSVのStringを得るところまではできました。
936デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)
2020/08/27(木) 10:58:22.12ID:W5jLLhyA0 >>934
shiftjisで表示してんじゃないの
shiftjisで表示してんじゃないの
937デフォルトの名無しさん (オッペケ Sr51-cLD7)
2020/08/27(木) 11:04:53.94ID:EdbkG5X3r VBAでBase64デコードしたByte配列をADODB.Streamにバイナリ書き込み・UTF8読み込みすることでString変数に収めるところまでは行けました。
ここから、ADODB.Connectionを使用してADODB.Streamの内容をCSVとしてパースしたいのですが、ネットで見られるサンプルコードはファイルを読み込むものばかりです。
試しにADODB.Connection.Open ADODB.Streamとしてみましたが、うまく行きません。
現在ADODBのリファレンスに目を通していて、関係の有りそうなプロパティを見て回っているのですが、方法をご存知の方いらっしゃればご教示いただけるとありがたいです。
ここから、ADODB.Connectionを使用してADODB.Streamの内容をCSVとしてパースしたいのですが、ネットで見られるサンプルコードはファイルを読み込むものばかりです。
試しにADODB.Connection.Open ADODB.Streamとしてみましたが、うまく行きません。
現在ADODBのリファレンスに目を通していて、関係の有りそうなプロパティを見て回っているのですが、方法をご存知の方いらっしゃればご教示いただけるとありがたいです。
938デフォルトの名無しさん (ワッチョイ ae02-1etN)
2020/08/27(木) 11:29:45.37ID:h0aAGvNz0939デフォルトの名無しさん (ワッチョイ 452c-VQ5f)
2020/08/27(木) 11:35:18.54ID:UMnMnU6h0 WSH は、CP932 だけじゃないの?
もうWSHは、Microsoft もサポートしていないのでは?
WSH, VBScript のスレのスレ主、ピッコロ大魔王に聞けば?
漏れは、Ruby スクリプトをダブルクリックで起動したい場合に、WSHを使っているけど、
その際、Ruby側で、CP932・UTF-8 を変換している。
または、NKF というモジュールもある
もうWSHは、Microsoft もサポートしていないのでは?
WSH, VBScript のスレのスレ主、ピッコロ大魔王に聞けば?
漏れは、Ruby スクリプトをダブルクリックで起動したい場合に、WSHを使っているけど、
その際、Ruby側で、CP932・UTF-8 を変換している。
または、NKF というモジュールもある
940デフォルトの名無しさん (ドコグロ MM22-YRmH)
2020/08/27(木) 11:58:06.46ID:tH7sxKPhM >>934
そりゃそうだろ…
Unicode文字列をShift-JISだと思ってUnicodeに変換して、それを更にUnicodeだと思ってShift-JISに変換して何をしたいんだ?
やりたいのは
StrConv(StrConv("試験", vbFromUnicode), vbUnicode)
かな?
そりゃそうだろ…
Unicode文字列をShift-JISだと思ってUnicodeに変換して、それを更にUnicodeだと思ってShift-JISに変換して何をしたいんだ?
やりたいのは
StrConv(StrConv("試験", vbFromUnicode), vbUnicode)
かな?
941デフォルトの名無しさん (ベーイモ MM16-4W6K)
2020/08/27(木) 12:21:37.52ID:M3gK7ks0M AddDllDirectory関数の引数にパスを渡したい
この関数の引数はUnicode文字列をである必要があるから、StrConvでUnicode変換してから渡す
変換がうまく行く文字だけのパスなら、AddDllDirectory関数は成功するが、変換がうまくいかない文字が含まれるパスだと失敗する
この関数の引数はUnicode文字列をである必要があるから、StrConvでUnicode変換してから渡す
変換がうまく行く文字だけのパスなら、AddDllDirectory関数は成功するが、変換がうまくいかない文字が含まれるパスだと失敗する
942デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)
2020/08/27(木) 12:24:57.51ID:W5jLLhyA0 >>941
vbUnicodeのstrconvだけじゃいかんの
vbUnicodeのstrconvだけじゃいかんの
943デフォルトの名無しさん (ベーイモ MM16-4W6K)
2020/08/27(木) 12:31:49.04ID:M3gK7ks0M >>942
それが失敗するから、vbFromUnicodeでもう戻したら案の定変になってた
それが失敗するから、vbFromUnicodeでもう戻したら案の定変になってた
944デフォルトの名無しさん (ワッチョイ ae02-1etN)
2020/08/27(木) 12:49:42.68ID:h0aAGvNz0 変換がうまくいく文字列
変換がうまくいかない文字列
それぞれ教えてよ
似たような流れ多い?
変換がうまくいかない文字列
それぞれ教えてよ
似たような流れ多い?
945デフォルトの名無しさん (ワッチョイ 822f-VQ5f)
2020/08/27(木) 13:18:08.14ID:XBcyB/ra0 なぜうまくいかないというコードを出さないのか
とりあえずEXCEL関係ないしVBA何でもスレ行けや
とりあえずEXCEL関係ないしVBA何でもスレ行けや
946デフォルトの名無しさん (ベーイモ MM16-4W6K)
2020/08/27(木) 13:21:23.95ID:M3gK7ks0M ・成功
日本、解析、実
あ~む、ア~ミ、濁音、半濁音
・失敗
試験、行、め~ん、ム~ン、ゃゅょ、ャュョ
日本、解析、実
あ~む、ア~ミ、濁音、半濁音
・失敗
試験、行、め~ん、ム~ン、ゃゅょ、ャュョ
947デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)
2020/08/27(木) 13:28:24.20ID:W5jLLhyA0 strconvが失敗するって時点で、何かの勘違いがあるとしか思えない
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★5 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★7 [ぐれ★]
- 【速報】高市首相「つい言い過ぎた」 存立危機事態の答弁について [237216734]
- 山上妹「統一信者から安倍自民への投票を求められた」法廷で証言 [947332727]
- 【速報】中国、水産物輸入停止★2 [989870298]
- 小林よしのり「高市早苗はネトウヨに媚びる女」 [616817505]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
- 【ネトウヨ朗報】イギリスのトラス元首相、高市有事で高市早苗の支持を表明 [603416639]
